This is <改行記号>
a pen. I have <改行記号>
a book. <改行記号>
<改行記号>
I go to <改行記号>
the park. <改行記号>
It is <改行記号>
a fine day.<改行記号>
<改行記号>
というファイルを
\begin{\itemize}
\item 空白
\begin{\itemize}
\item This is a pen.
\item I have a book.
\end{\itemize}
\item 空白
\begin{\itemize}
\item I go to a park.
\item It is a fine day.
\end{\itemize}
\end{\itemize}
に置換するにはどうしたらよいでしょうか。よろしくお願いします。
置換するための簡単なプログラムを書いてみました。
以下の内容をテキストファイルに貼り付けて、それを「conv.vbs」という名前で保存してください。
その後、置換したいファイルを「conv.vbs」のアイコンにドラッグ&ドロップすると、
置換したいファイルと同じ場所に「output.txt」という名前で置換した結果のファイルが作成されます。
やっていることは、まず<改行記号>だけの行でテキストを区切ってから、
それぞれをピリオドで改行しながら形式に合った形で出力するというものです。
Set oFSO = CreateObject("Scripting.FileSystemObject") sInFile = GetFile() sTextList = ReadFile(sInFile) sOutFile = oFSO.GetFile(sInFile).ParentFolder.Path & "\" & "output.txt" Call OutFile(sTextList, sOutFile) WScript.Echo "置き換え終了" 'ドラッグ&ドロップで渡されたファイル名を得る Function GetFile() Set oWArgv = WScript.Arguments If oWArgv.length = 0 Then WScript.Echo "ドラッグ&ドロップしてください。" WScript.Quit End If GetFile = oWArgv.item(0) End Function '読み込み Function ReadFile(sFileName) Set oTs = oFSO.OpenTextFile(sFileName, 1) bNullLine = False sStr = "" Do While Not oTs.AtEndOfStream sLine = oTs.ReadLine() sStr = sStr & Trim(sLine) & " " If sLine = "" Then If bNullLine = False Then sStr = sStr & Chr(0) bNullLine = True Else bNullLine = False End If Loop oTs.Close If Right(sStr, 1) = Chr(0) Then sStr = Left(sStr, Len(sStr) - 1) ReadFile = Split(sStr, Chr(0)) End Function '書き出し Sub OutFile(sTextList, sOutFile) Set oTs = oFSO.CreateTextFile(sOutFile) oTs.WriteLine("\begin{\itemize}") For i = 0 To UBound(sTextList) oTs.WriteLine("\item ") oTs.WriteLine("\begin{\itemize}") sSplitPeriodTextList = Split(sTextList(i), ".") For j = 0 To Ubound(sSplitPeriodTextList) sWriteText = Trim(sSplitPeriodTextList(j)) If sWriteText <> "" Then oTs.WriteLine("\item " & sWriteText & ".") Next oTs.WriteLine("\end{\itemize}") Next oTs.WriteLine("\end{\itemize}") oTs.Close() End Sub
ありがとうございます。早速試してみます。