- ベストアンサー
VBAで文字列を部分的に抽出・置換する方法
例えば x = "xyz: 123 [kg]" という文字列を変数xに代入した後に "123"の部分だけ数値として抽出し、 更に123を567に置換して x = "xyz: 567 [kg]" にという文字列に変換したいのですがどのようにすれば良いでしょうか?
- みんなの回答 (2)
- 専門家の回答
関連するQ&A
- 文字列の中の特定部分とそうでない部分とで処理を分けたい
文字列中で、<test>~</test>で囲まれた部分と、囲まれてない部分とで処理を分けたいです。 そして、分けて処理したあとに、くっつけたいです。 abcdEFG <test> ABCDEFG </test> hiJKLmn ↓ 例えば、<test>で囲まれた部分は小文字に変換、囲まれていない部分は大文字に変換という処理であれば以下のようにしたいのです。 ABCDEFG <test> abcdefg </test> HIJKLMN 扱う文字列は、UTF-8で複数行です。 自分でとりあえず動作するコードは作成してはみたものの、、、 あまりスマートとはいえないと感じていて、もっといい方法があればご教示お願いしたいです。。。 1.文字列Aの中から、<test>で囲まれた部分をpreg_match_all()で取得し、変数Aに格納。 2.変数Aに処理を加え、変数Bに代入。 3.preg_replace()で文字列Aの中の、変数A部分を変数Bに置換。 4.文字列Aを、<test>で囲まれた部分をキーとしてpreg_split()で分解し、変数Aに格納。 5.変数Aに処理を加え、変数Bに代入。 6.preg_replace()で文字列Aの中の、変数A部分を変数Bに置換。 $pre1 = array(); $pre2 = array(); preg_match_all("/<test>((.|\r\n|\n)*?)<\/test>/u", $p_string, $pre1); for ( $x = 0; $x < count($pre1[0]); $x++ ) { # $pre1[0]ではなく$pre1[1]としてるのは<test>タグを含めないため $pre2[$x] = $pre1[1][$x]; # hoge*()は処理 $pre2[$x] = hoge2( $pre2[$x] ); $pre2[$x] = hoge4( $pre2[$x] ); # <test>タグを戻して、置換後の文字列完成・・・(1) $pre2[$x] = '<test>'.$pre2[$x].'</test>'; # 置換パターン・・・(2) $pre1[0][$x] = "/" . preg_quote($pre1[0][$x], "/") . "/u"; } # 文字列から、(2)置換パターンを探して、(1)置換後文字列に置き換え $p_string = preg_replace( $pre1[0], $pre2, $p_string ); $pre1 = array(); $pre2 = array(); $pre1 = preg_split("/<test>(.|\r\n|\n)*?<\/test>/u", $p_string, -1, PREG_SPLIT_NO_EMPTY); for ( $x = 0; $x < count($pre1); $x++ ) { $pre2[$x] = $pre1[$x]; # hoge*()は処理 $pre2[$x] = hoge1( $pre2[$x] ); $pre2[$x] = hoge2( $pre2[$x] ); $pre2[$x] = hoge3( $pre2[$x] ); # 置換後の文字列完成・・・(3) $pre2[$x] = hoge4( $pre2[$x] ); # 置換パターン・・・(4) $pre1[$x] = "/" . preg_quote($pre1[$x], "/") . "/u"; } # 文字列から、(4)置換パターンを探して、(3)置換後文字列に置き換え $p_string = preg_replace( $pre1, $pre2, $p_string ); # 最後に<test>タグを削除する $p_string = preg_replace( "/<test>((.|\r\n|\n)*?)<\/test>/u", $1, $p_string );
- ベストアンサー
- PHP
- [Linux] ubuntuでコマンド中の文字列を置換して実行する。
bashを利用しております。 #mv /abc /abc0 && mv /abc2 /abc 上記コマンドを実行した後、abcという文字列をxyzに置換 (内容的には#mv /xyz /xyz0 && mv /xyz2 /xyzと同一)し、 コマンドを手動で実行する方法を探しています。 ヒストリ置換を用いて 「直前に実行したコマンドのabcという文字列をxyzという文字列に置換して実行する」 にはどのようにすればいいのでしょうか? また、もっといい方法がございましたら、 教えていただけますでしょうか? よろしくお願いいたします。
- ベストアンサー
- その他(ITシステム運用・管理)
- 数値を文字列に変換する方法
int rssi_dec = Convert::ToInt32("0X" + test02, 16); -----------(中略)----------------------- 一度、文字列だったものを数値に変換して、中略部分で計算をして、もう一度数値をHEXの 文字列に変換して、 String^ test このtestの中に代入したいと思っているのですが、どのようにすればよいのでしょうか? どうぞ、ご教授よろしくお願い致します。
- ベストアンサー
- C・C++・C#
- エクセルで特定文字列の抽出する方法を教えてください。
エクセルで特定文字列の抽出する方法を教えてください。 たとえばG00X-483.931Y-412.2R5.0 と書かれてるセルからXの値「-483.931」だけを抽出したいのですが分からなくて困ってます。 またこの数値は8文字と決まってないのでX~Yの間の数値と言う感じで抽出したいです。 よろしくお願いします。
- ベストアンサー
- オフィス系ソフト
- PHP:2つの置換文字列を一気に変換するには
PHPで1つの文字列変数内に2つの置換文字列が存在する場合一気に変更可能でしょうか? $data = "a%CHANGE1%c%CHANGE2%"; 置換文字列1:%CHANGE1% ⇒ "b"に変換 置換文字列2:%CHANGE2% ⇒ "d"に変換 ↓すると print($data); 「abcd」 となる感じです。 よろしくお願いいたします。
- ベストアンサー
- PHP
- sedなどで、特定の文字列の後の文字列を抽出したい
sedなどで、特定の文字列の後の文字列を抽出したい シェルスクリプト内で、sedなどを使って特定の文字列の後の文字列を抽出したいのですが、どうすればいいでしょうか? たとえば、abcXYZ123defghiのなかから、XYZの後の「123」を抜き出したいです。 echo abcXYZ123defghi | sed ... のようにして実行させたいです。
- ベストアンサー
- その他(プログラミング・開発)
- 文字列の置換で・・・
Javaでの文字列の置換についてなんですが ある文字を任意の文字に置換し表示させるとともに 何個の文字を置換したかも同時に知らせたい場合は どのような処理をしたらよいでしょうか? ぜひご協力よろしくお願いします!! (例)入力した文字列に"a"が含まれる場合は"b"に置換し その際に変換した文字数も表示してください。 basic→出力結果: "bbsic" 置換した文字数は1です。
- ベストアンサー
- Java
- 文字列の置換についての質問です。
ASPにて文字列変数で最後の文字がある文字だったら違う文字に変換したいのですが、 どのような記述をすればよろしいのでしょうか? 具体的には変数strSの最後の文字が「A」だったら「X」に したいと思っています。 どうぞよろしくお願い致します。
- ベストアンサー
- Microsoft ASP
- 文字列置換の方法
下記の長い文字列をエディタで置換したいのですが、長くなると置換できません。このような長い文字列(?)は一般的なエディタでは置換できないものなのでしょうか。 【置換前】 <FORM ACTION="cargo.cgi" METHOD="POST" ENCTYPE="application/x-www-form-urlencoded"> 【置換後】 <FORM ACTION="cargo.cgi" METHOD="POST">
- ベストアンサー
- その他(プログラミング・開発)
- マックから印刷できない現象が発生しました。プリンターが反応せず、マックには「looking for printer」と表示されます。
- 一度は印刷できたが、2度目に印刷しようとしたところ、マックからプリンターが見つからないというエラーが発生しました。
- マックとプリンターの接続に問題があり、印刷ができない状態です。
お礼
ありがとうございます。 確かにこのプログラムを実行したところ、思ったとおりのことができることが分かりました。 でも、やりたいことは、 文字列が格納された変数xがあって、この中の何文字目から何文字目までを抽出する、 そして何文字目から何文字目まで置換するということなのです。 教えてくださったプログラムですが、どういうことをしているのか理解できないのですが・・・ CreateObject("VBScript.Regexp")、"\d+"、myReg.Replace を検索ワードとしてgoogleで調べたみたのですが、 こうしたものを使ったプログラムは確かに見つかるのですが どのようにして使うのか書かれたページが見つかりませんでした。 できれば、このプログラムの構文に関して教えていただけないでしょうか?