Visual Basic 中学校 掲示板 投稿の管理
タグのない投稿を抽出
統計
RSS
Visual Basic 中学校
投稿一覧
行コメントを除去するプログラム
この投稿へのリンク
https://keijiban.umayadia.com/ThreadDetail.aspx?ThreadId=10033#CommentId17114
この投稿の削除
削除パスワード
削除する
コメント本文
投稿者
shu
 (社会人)
投稿日時
2011/2/17 00:38:14
これでだいぶましになったと思う。まだ抜けはあると思います。
TextBox1:入力
TextBox2:出力
にしてあります。
Dim reg2 As New Regex("^(?<PRE>[^""]*"")(?<AFT>.*)$", RegexOptions.Compiled)
Dim reg3 As New Regex("^(?<PRE>[^/]*)/(?<C2>[/*])(?<AFT>.*)$", RegexOptions.Compiled)
Dim reg4 As New Regex("^(?<PRE>[^*]*)\*/(?<AFT>.*)$", RegexOptions.Compiled)
Dim reg5 As New Regex("(?<PRE>(^.*?[^\\]|^)"")(?<AFT>.*)$", RegexOptions.Compiled)
Dim rd As New StringReader(TextBox1.Text)
Dim wt As New StringBuilder
Dim blnCom = False
Dim blnStr = False
Dim m As Match
Dim strLine = rd.ReadLine
Do While strLine IsNot Nothing
Do While strLine.Length > 0
'--- コメント中
If blnCom Then
m = reg4.Match(strLine)
If m.Success Then
blnCom = False
strLine = m.Groups("AFT").Value
Else
strLine = String.Empty
End If
Continue Do
End If
'--- 文字列中
If blnStr Then
m = reg5.Match(strLine)
If m.Success Then
blnStr = False
wt.Append(m.Groups("PRE").Value)
strLine = m.Groups("AFT").Value
If strLine.Length = 0 Then
wt.AppendLine()
End If
Else
wt.AppendLine(strLine)
strLine = String.Empty
End If
Continue Do
End If
'--- 文字列の開始検知
m = reg2.Match(strLine)
If m.Success Then
blnStr = True
wt.Append(m.Groups("PRE").Value)
strLine = m.Groups("AFT").Value
If strLine.Length = 0 Then
wt.AppendLine()
End If
Continue Do
End If
'--- コメントの開始検知
m = reg3.Match(strLine)
If m.Success Then
wt.Append(m.Groups("PRE").Value)
Dim strC2 = m.Groups("C2").Value
If strC2 = "/" Then
strLine = String.Empty
wt.AppendLine()
Continue Do
Else
blnCom = True
strLine = m.Groups("AFT").Value
If strLine.Length = 0 Then
wt.AppendLine()
End If
Continue Do
End If
End If
'--- 通常行
wt.AppendLine(strLine)
strLine = String.Empty
Loop
strLine = rd.ReadLine
Loop
TextBox2.Text = wt.ToString
rd.Close()
rd.Dispose()