- PR -

文字変換について

投稿者投稿内容
Emacs信者
常連さん
会議室デビュー日: 2003/08/10
投稿数: 38
投稿日時: 2003-12-01 18:14
org.apache.commons.lang.StringUtils.replaceを使うのはダメなのでしょうか。
それなら、このようにすれば良いとおもいます。
まあ結局、上のメソッドのコピペですが。

コード:
public static String replace(String text, String repl, String with) {
    if (text == null || repl == null || with == null || repl.length() == 0 ) {
        return text;
    }

    StringBuffer buf = new StringBuffer(text.length());
    int start = 0, end = 0;
    while ((end = text.indexOf(repl, start)) != -1) {
        buf.append(text.substring(start, end)).append(with);
        start = end + repl.length();
    }

    buf.append(text.substring(start));
    return buf.toString();
}

おばけ
ぬし
会議室デビュー日: 2002/11/14
投稿数: 609
お住まい・勤務地: 東京都江東区
投稿日時: 2003-12-01 18:22
引用:

org.apache.commons.lang.StringUtils.replaceを使うのはダメなのでしょうか。


良いと思います。
ただ、mamiさんってどうも初心者のようですので、最初はJDKのライブラリだけで
やれるようになった方が良いかと思いました。
mami
会議室デビュー日: 2003/11/22
投稿数: 11
投稿日時: 2003-12-01 18:27
おばけさんのやり方でやると
すべて変換するにはどうすればいいのでしょうか?
おばけ
ぬし
会議室デビュー日: 2002/11/14
投稿数: 609
お住まい・勤務地: 東京都江東区
投稿日時: 2003-12-01 18:44
ループ、という概念を覚えましょう

# 初心者であることを恥じる必要は無いと思います。
# 誰しも最初は初心者ですから。
# 最初から目的のコードを書こうとするのは難しいと思いますので、
# 他の方が提示してくれたサンプルコードを読んで、「なぜこれだと
# うまく行くんだろう」ということをじっくり考えてみてください。

で、コードを直しました。

コード:

String mydata = "...";

String targetFrom = "”";
int fromLen = targetFrom.length();
String targetTo = "qu";
int toLen = targetTo.length();

StringBuffer buf;
int index = 0;
int point = 0;
while ( ( index = mydata.indexOf(targetFrom, point) ) != -1 ){
buf = new StringBuffer(mydata);
buf.replace(index, index + fromLen, targetTo);
mydata = buf.toString();
point = index + toLen;
}



ちゃんと動作確認したんで、大丈夫だと思います。

P.S. 正解はもちろん一つではありません

[ メッセージ編集済み 編集者: おばけ 編集日時 2003-12-01 18:46 ]

スキルアップ/キャリアアップ(JOB@IT)