「平成」を感じるもの

あるテキストの中に空行をはさんで文字列がある時に"ABCD"の文字列を含む場合はABCDを含むひとまとまりだけを取得したいのですがその方法について教えてください。


[テキスト]
AAAA
BBBB
CCCC

DDDD
EEEE
ABCD
FFFF

GGGG
HHHH

[取得したい部分]
DDDD
EEEE
ABCD
FFFF

A 回答 (3件)

はじめまして nonono11 さん


簡単にロジック考えましょう。必要なのは最終的に動くこと。
パターン・繰り返しになること。ただそれだけです。
別段regexp(正規表現)を使えとも書いてませんしregexpの宣言をする行より短く結果を得られるでしょう
さてでは回答を提示しましょう。
filepathは任意のテキストパスを指定してください。




filepath="c:\test.txt": Set otf = CreateObject("Scripting.FileSystemObject").OpenTextFile(filepath): textarray = split(otf.readall,vbcrlf & vbcrlf ): otf.Close
for i = 0 to ubound(textarray)
if instr(textarray(i),"ABCD") then getdata=getdata & textarray(i) & vbcrlf
next
wscript.echo getdata





ファイルを開き(改行コード改行コード)で配列化あとはその配列分比較しながらforをまわすだけ。
以上。難しく説明しようと思ってもしようがない。今回の処理はこれだけ事足りるのです。難しく考える必要は全くもってこれっぽちもありません。

処理違い・補足・追加処理等必要でしたらいってください。
    • good
    • 1

dim sLile, sBuf


dim FSO, oFile

Set FSO = CreateObject("Scripting.FileSystemObject")
Set oFile = FSO.OpenTextFile("ファイルパス", 1)
sBuf = ""
sLine = ""
do while oFile.AtEndOfStream
  sBuf = oFile.ReadLIne
  if sBuf <> "" then
    sLine = sLIne & sBuf & vbCrLf
  elseif sLine<>"" then
    if InStr(sLine, "ABCD")<>0 then
      MsgBox sLine
    end if
    sLine = ""
  end if
Loop
' 未検査のラインがある場合
if sLine<>"" then
  if InStr(sLine, "ABCD")<>0 then
    MsgBox sLine
  end if
end if
といった具合でしょう
    • good
    • 0

WSH+VBScriptということでしょうか?方法だけで良いんですよね。


テキスト全体を1つの文字列として変数に読み込んで正規表現で抽出すればいいでしょう。
    • good
    • 1

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報