• ベストアンサー

vbsで2文字以上の空白を改行に変換するには?

恥ずかしながら、vbs初心者です。 vbsでテキストファイルを読み込んで、 2文字以上の空白を改行に変換するにはどうすれば宜しいでしょうか? 以下???のところに正規表現で \n は使用出来ないようですので、どなたかご教授頂けないでしょうか? set objRE = New RegExp objRE.Pattern = "\s{2,}" objRE.IgnoreCase = True objRE.Global = True strData = objRE.Replace(strData,???)

質問者が選んだベストアンサー

  • ベストアンサー
  • Gin_F
  • ベストアンサー率63% (286/453)
回答No.1

> strData = objRE.Replace(strData,???) strData = objRE.Replace(strData,vbNewLine) ではどうでしょうか?

muropon
質問者

お礼

ご回答有難うございました。 vbNewLine で意図したとおり改行に変換出来ました。

その他の回答 (1)

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.2

もしくは、 vbCrLf ※\s だとタブや改行なども含まれます

muropon
質問者

お礼

vbCrLf でも改行に変換出来ました。 ご回答有難う御座いました。

関連するQ&A

  • VBS/ドラッグ&ドロップ/UTF-8

    VBS超初心者です。 VBSにテキストファイルをドラッグ&ドロップして、改行が3回以上連続した箇所を「改行+ダミー文字+改行」に置換するスクリプトを作成してみました。 WEB上のサンプルスクリプトなどを参考にしながら、なんとか動くようにすることはできたのですが、ドイツ語のファイルを処理すると、何故か文字コードがS-JISになって文字化けしてしまいます。 どうしたらUTF-8のまましょりできるのでしょうか。 また、スクリプトの記述もかなり拙いものになっていると思います。 問題点、完全方法などご教授いただけると今後の勉強に役立つと思うので、よろしくお願いします。 Set FS = CreateObject("Scripting.FileSystemObject") For Each strArgument in Wscript.Arguments Set ts=Fs.OpenTextFile(strArgument,1,True,TristateTrue) myStr=ts.ReadAll Set objRE = New RegExp objRE.Pattern = "(" & vbCrLf & "){3,}" repStr = vbCrLf & "[dummy]" & vbCrLf objRE.IgnoreCase = True objRE.Global = True objRE.Multiline = True newStr = objRE.Replace(myStr,repStr) ts.Close Set ts = FS.OpenTextFile(strArgument,2,True,TristateTrue) ts.Write newStr ts.Close

  • 正規表現でテキストの中身を置換したい(VBS)

    初心者で、もしかしたらすっごく恥ずかしい事を聞いているかも知れませんが・・・ テキストファイルの中を正規表現を使って検索し、指定(固定)文字列と置換したいのですが、どうもうまく行きません。 ソースは以下のような物です。 ----- Set FS = CreateObject("Scripting.FileSystemObject") Set ts=Fs.OpenTextFile("C:\Program Files\ABC\EFG.txt",1) myStr=ts.ReadAll repStr = "NG_PATH =D:\ABC\HIJ" Set objRE = New RegExp objRE.Pattern = "^NG_PATH.*=C:\\Program\sFiles\\ABC\\HIJ" objRE.IgnoreCase = True objRE.Global = True newStr = objRE.Replace(myStr,repStr) ts.Close Set ts = FS.OpenTextFile("C:\Program Files\ABC\EFG.txt",2) ts.Write newStr ts.Close ------- ●ポケットリファレンスの内容を見て、組み合わせながら作っています ^_^; ●置換対象ファイルの中をobjRE.Patternで指定している内容で検索すると見つかります。 ●置換対象ファイルの更新日時を確認すると、VBS実行時間で更新されています。 それから「myStr」や「newStr」は、任意の変数を宣言して、そっちを使う事って出来ますか?

  • VBS正規表現の方法

    教えてください。 <内容> VBSにてメールアドレスチェックをしているのですが、うまくいきません。 <仕様> アカウント 大文字不可。 ドメイン  大文字不可。 最後は英文字で終わる。 .(ドット)とかで終わりにしない。 <ソース> Set objRE = New RegExp objRE.Global = True objRE.IgnoreCase = False objRE.Pattern = "([0-9a-z_\.+-]*)(@?)([0-9a-z-\.]*)([a-z]+)" Set Matches = objRE.Execute(mstrMailValue) Set objSM = Matches(0) mAccount = objSM.SubMatches(0) mAtmark = objSM.SubMatches(1) mDomain = objSM.SubMatches(2) & objSM.SubMatches(3) MsgBox (mAccount & mAtmark & mDomain) If (mAtmark <> "@") Then MailChk = False Else If (Len(mAccount) < 1) Or (Len(mAccount) >= 80) Then MailChk = False Else If (Len(mDomain) <= 3) Or (Len(mDomain) >= 63) Then MailChk = False Else If (mAccount & mAtmark & mDomain) <> mstrMailValue Then MailChk = False Else MailChk = True End If End If End If End If objRE.Patternがうまくいっていないと思います。 全て数値にすると、エラー(VBSがストップ)する。 どなたか教えてくださいませ。m(-_-)m 上記のソースよりも他の手があれば教えてください。

  • 正規表現を使った置換処理。大文字の直前に「_」を入れたい

    正規表現を使った置換処理です。 大文字の直前に「_」を入れたいと思っています。 例:htmlLinkStr → html_Link_Str WSHとして以下のようなコードを1行記述しました。 WScript.Echo("htmlLinkStr".replace(/([A-Z]+)/g, "_" + RegExp.$1)); しかし「html_ink_tr」としょぼい結果しかえられません。 「RegExp.$1」の使い方が悪いのかもしれません…。 ちなみにVBSでは以下のコードで成功しています。 ので大きくはずしてはいないと思うのですが… Set regEx = New RegExp regEx.Pattern = "([A-Z]+)" regEx.Global = True MsgBox regEx.Replace("htmlLinkStr", "_$1") JavaScriptでの正規表現の使い方に詳しい方よろしくお願いします。

  • VBScriptでの文字列置換処理

    10列あるCSVファイルに初期値0の列を5番目に追加したいので .vbsファイルを作成し下記のように書きました。(抜粋) でも置換されたファイルが作成されず困っています。 Set objFS = CreateObject("Scripting.FilesystemObject") Set objInFile = objFS.OpenTextFile(strTargetFile, ForReading) strData = objInFile.ReadAll objInFile.Close   strData = ReplaceTest(strData, "^(.*?,)(.*?,)(.*?,)(.*?,)(.*)$", "\1\2\3\40,\5")    strNewFilePath = getFilePath(strTargetFile) strNewFile = objFS.BuildPath(strNewFilePath, objFS.GetTempName) Set objNewFile = objFS.CreateTextFile(strNewFile, ForWriting) '中間ファイルへの書き込み objNewFile.Write strData objNewFile.Close objFS.DeleteFile strTargetFile objFS.MoveFile strNewFile, strTargetFile '置換関数 Function ReplaceTest(str1, patrn, replStr) Dim regEx Set regEx = New RegExp regEx.Pattern = patrn regEx.IgnoreCase = True ReplaceTest = regEx.Replace(str1, replStr) ' 置換します。 End Function

  • [Ecxel VBA] 山括弧(>)のエスケープ

    Excel2003のVBAで、以下の例のようにHTMLタグ内の強制改行を<br />に置換するマクロを組みたいです。 ▼置換前 <ul> <li>あああ いいい</li> <li>ううう</li> </ul> ▼置換後 <ul> <li>あああ<br /> いいい</li> <li>ううう</li> </ul> 以下のようにVBAを書いてみましたが、置換パターンが認識せず困っています。 ============================= Dim re As Object Set re = CreateObject("VBScript.RegExp") re.IgnoreCase = True ' 大文字小文字を区別しない re.Global = True ' 複数回マッチする re.MultiLine = True '複数行マッチ re.Pattern = ">(\n){1,}<" ' 正規表現のパターン buf = re.Replace(buf, ">@@BRにしない改行@@<") ' 置換 ' ここで、残った改行コードを <br /> に置換する(ソース省略) ' ここで、「@@BRにしない改行@@」を改行コードに戻す置換をする(ソース省略) ============================= テキストエディタでこの正規表現パターンを使えばできたのですが、 Excel VBAでは、この正規表現パターンで抽出できませんでした。 re.Pattern = "\>(\n){1,}\<" のようにエスケープしてみてもだめでした。 先頭の「>」をトルとパターンを認識したため、先頭の「>」が原因かと 思っているのですが解決方法を見つけることができませんでした。 エスケープ方法が不適切なのでしょうか? 解決策をご教示いただけると幸いです。よろしくお願いいたします。

  • 改行を含んだ文字列を正規表現で置換するには?

    正規表現で、改行を含んだ文字列を置換しようと思っています。 例えば下の「infile.txt」にある aaa bbb という(2行にわたる)文字列を zzz という文字列に変換させたい訳です。 試しに「test.vbs」のようなコードを書いてみましたが、これでは上手く行きませんでした。 上手く変換されるようにするには、どうしたら良いでしょうか? ----------------------------------------------------- ○「test.vbs」の内容 Set fso = CreateObject("Scripting.FileSystemObject") Set inFile = fso.OpenTextFile("C:\infile.txt") Set outFile = fso.CreateTextFile("C:\outfile.txt") Set regEx = New RegExp regEx.pattern = "aaa\nbbb" repStr = "zzz" Do Until inFile.AtEndOfStream tempLine = inFile.ReadLine repLine = regEx.Replace(tempLine, repStr) outFile.WriteLine repLine Loop inFile.Close outFile.Close ----------------------------------------------------- ○「C:\infile.txt」の内容 aaa bbb ccc

  • VBScriptを用いた改行コードを含む置換方法について

    お世話になります。 VBScript初心者です。 下記の通り、VBスクリプトを用いてファイルの文末の「カンマカンマ改行」を 「改行」に置換したいと思っていますが、上手くできません。 VBScriptで正規表現を用い、改行コードを含んだ置換方法を教えていただきたく思います。 【置換前】 AA00001,プリン,AA00001,AA00000xxxx.xxx.xx.xx,,,○,, 【変更後】 AA00001,プリン,AA00001,AA00000xxxx.xxx.xx.xx,,,○ 現在のスクリプトは、 myStr1 = "AA00001,プリン,AA00001,AA00000xxxx.xxx.xx.xx,,,○,," '(1)RegExp オブジェクトを作成する Set objRE = New RegExp '(2)検索パターンを設定     objRE.Pattern = ",+\n"       '(3)大文字/小文字を区別しない objRE.IgnoreCase = True   '(4)全体を検索     objRE.Global = True     '(5)置換を実行 myStr2 = objRE.Replace(myStr1,"\n") '(6)一行書込み objFile.WriteLine(myStr2)      となっています。(部分的に抜粋しましたが各変数の定義はできています) (2)の検索パターンに",+\n"、(5)の置換を実行に"\n"を定義しましたが置換できませんでした。 他のパターンとして (2)の列に",+\x0A"、(5)の列に"\x0A" (2)の列に",+\x0d"、(5)の列に"\x0d" も行ってみましたが置換できませんでした。 なお、置換対象のファイルはtxtファイルまたはCSVファイルを考えています。 どなたかご教示いただきたく、よろしくお願い致します。

  • 改行をカンマ変換、複数ある場合を1個に

    テキストの改行部分をカンマに置き換えています。JavaScript初心者です。 if(getId("br_kanma").checked==true){ str = str.replace(/(\r\n\r\n)|(\n\n)|(\r\n)|(\n)/g, ","); } この場合で、連続改行が続く場合にカンマも増えてしまいます・・・ 改行スペースが多くてもカンマを1個だけにするにはどうしたらよいでしょうか?  

  • 文字列前後の「全角空白/半角空白/改行文字」を取り除く

    PHPで、「文字列の前後に付加されている全角空白/半角空白/改行文字を取り除く」 という処理をしたいのですが、以下のように置換処理を書くとうまくいきません。 $after = preg_replace('/^[  \r\n]*(.*)[  \r\n]*$/u', '$1', $before); // [  \r\n]→[半角空白、全角空白、改行文字]です どううまくいかないのかといいますと、入力として半角スペース+全角文字が入ったときに、全角文字の先頭文字が文字化けしてしまいます。 たとえば、 <半角スペース>あああ をこれにかけると、 <よくわからない文字>ああ となります。 以下のように2回に分けてみると、正常に動きます。 $tmp = preg_replace('/[  \r\n]*$/u', '', $before); $after = preg_replace('/^[  \r\n]*/u', '', $tmp); 最初のように1回の正規表現による置換で済ませたい場合、 どのように書くのが適切なのでしょうか? PHPのバージョンは5.2.3です。

    • ベストアンサー
    • PHP

専門家に質問してみよう