- ベストアンサー
Javaの文字列置換の問題について
- Javaのプログラムで文字列の置換処理を行う際に、第二引数が複数存在する場合にうまく処理できない問題が発生しています。
- 具体的には、第一引数に含まれる複数の第二引数を順番に置換すると、後半部分の置換が正しく行われないという問題です。
- 対策としては、文字列を置換する際に、一度置換した部分を残し、再度置換処理を行う必要があります。具体的な実装方法については、コードの改良が必要です。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
ならばこうなります。 public class Replace { public static void main(String[] args) { String str = args[0]; for(int i=0;i<args[1].length();i++){ int num = str.indexOf(args[1].charAt(i)); while (num != -1){ str = (str.substring(0, num) + args[2] + str.substring(num + 1)); num = str.indexOf(args[1].charAt(i)); } } System.out.println(str); } }
その他の回答 (2)
- maiko0333
- ベストアンサー率19% (839/4401)
AをCに変えてBもCに変えるということですか? 第一引数:ABCBA 第二引数:AB 第三引数:Cならば CCCCCという答えでしょうか? ならば第2引数を1文字づつ取り出してこの処理をすれば解決します。
お礼
ご回答ありがとうございました。
補足
おっしゃるとおり、CCCCCという答えにしたいのです。 最初からそのように質問できなくて申し訳ありません;; 一文字ずつ取り出す、というやり方もピンとこないのですが、charAtメソッドなどを使用するのでしょうか? 出来ましたらソースを書いていただけませんでしょうか・・・;
- maiko0333
- ベストアンサー率19% (839/4401)
テストしましたがなんともないようですよ。 具体的にどのようなコマンドを与えたら変換できなくなりますか? 書かれているような、「第一引数:ABCBA 第二引数:AB 第三引数:C」 であれば答えはCCBAが正しくて、第2引数ABを見てBAは変換されません。
お礼
ご回答ありがとうございました。
補足
ご回答ありがとうございます><;; 第二引数がABではなく、AとBという風に捉えて後半部分も変換出来るようにならないかと考えたのですが、それは正しくないということなのですよね。 全面的にソースを書き換えても出来るようになったりはしないものでしょうか・・・;;
お礼
何度もお手数をお掛けしまして本当に申し訳ありませんでした;; そして根気強くお付き合いくださいましてありがとうございました!