人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

テキストで

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}

に置換するにはどうしたらよいでしょうか。よろしくお願いします。


●質問者: filofax
●カテゴリ:コンピュータ インターネット
✍キーワード:BEGIN book Go PEN テキスト
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● ku__ra__ge
●60ポイント

置換するための簡単なプログラムを書いてみました。

以下の内容をテキストファイルに貼り付けて、それを「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
◎質問者からの返答

ありがとうございます。早速試してみます。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ