解決したいこと
あるテキストファイル内にある変数(X_数字2桁)を0埋めして(X_数字6桁)にフォーマットしたい。
(追記)
変数はアルファベットXとアンダーバーの後数字2桁の形式のものです。例[X_01]
これをフォーマットして[X_000001]としたいです。
変数はファイル内にいくつ存在するかはわかりません。
また、フォーマット前は数字2桁の想定ですが2桁でない可能性も考慮したいです。
変数と言っていますがテキストファイル内の文字である以上の意味は特にないです。
(追記)
本文は下記のように形式なし、複数行を想定しています。
String text = " 変数X_01があります。 変数X_02があります。 変数X_003がまぎれています。 テキストファイル内から本文を取り出してフォーマットした後、ファイルを更新したいです。";
(業務上で使用するものです。)
試したこと
・split()でテキストを配列化してフォーマットかけて、戻す。
→csvやtsv形式ではないので区切り文字がなく難しい。
・正規表現でマッチさせる。
String text = "テキスト" Pattern pattern =Pattern.compile("X_//d+"); Matcher m = pattern.matcher(text); int count = 0; //マッチする変数の数を数える while(m.find()) { count++; } String str = null; for(int i = 1; i <= count; i++) { if(i == count) { str += "(X_//d+)"; } else { str += "(X_//d+)," } } pattern = Pattern.compile(str); for(int i = 1; i <= count; i++) { m = pattern.matcher(text); String matchWord = m.group(i); String newWord = String.format("%06", matchWord); text = m.replaceFirst(matchWord, newWord); }
ごり押しでいけるかと思ったのですがreplaceがうまくいかなそう。(動かしてないので確証はないですが)
・indexOf, substringを使ってできそう?試してないです
意外とネットで調べても出てこず、できそうでできず、うまいやり方が思いつきません。
雑な質問で申し訳ありませんがどなたかご教授いただけると助かります。
回答1件
あなたの回答
tips
プレビュー