2

部分文字列連結を にリファクタリングするにはどうすればよいStringBuilderですか?

        String line = "this is my start and my end string";
        int start = line.indexOf("start");
        line = line.substring(0, start) + line.substring(start + 5);

        int end = line.indexOf("end");
        line = line.substring(0, end) + line.substring(end + 3);
            //result: this is my and my string";

同じコードは StringBuilder ではどのように見えるでしょうか? 部分文字列を次々に実行したいときは?

4

5 に答える 5

1

次のようなものがあります。

    StringBuilder line = new StringBuilder("this is my **start** and my **end** string");
    int start = line.indexOf("start");
    line = new StringBuilder(line.substring(0, start).append(line.substring(start + 5)));

    int end = line.indexOf("end");
    line = new StringBuilder(line.substring(0, end).append(line.substring(end + 3)));
于 2013-10-01T10:03:58.953 に答える
1

このようなことを意味しますか?それとも、私はそれを間違って理解しましたか?

String line = "this is my start and my end string";
int start = line.indexOf("start");
int end = line.indexOf("end");
StringBuilder sb = new StringBuilder();
sb.append(line.substring(0, start);
sb.append(line.substring(start + 5);
sb.append(line.substring(0, end);
sb.append(line.substring(end + 3);
String result = sb.toString()
于 2013-10-01T10:04:34.770 に答える
0

私が間違っていなければ、StringBuilderには独自のindexOfと部分文字列の実装があります。質問の主な関心事は String の使用を破棄するようであり、StringBuilder の主な機能は依然として連結です。

したがって、http: //docs.oracle.com/javase/7/docs/api/java/lang/StringBuilder.html は関連するメソッドを見つけるのに役立ち、.append() メソッドと ur 文字列検索で StringBuilder を使用し続けることができます。および部分文字列メソッド。

于 2013-10-01T10:14:22.620 に答える
0

試す

String line = "this is my start and my end string";
    int start = line.indexOf("start");
    StringBuilder stringBuilder = new StringBuilder();
    stringBuilder.append(line.substring(0, start));
    stringBuilder.append(line.substring(start + 5));

    int end = line.indexOf("end");
    stringBuilder.append(line.substring(0, end));
    stringBuilder.append(line.substring(end + 3));
    System.out.println("StringBuilder : "+stringBuilder.toString());
于 2013-10-01T10:06:12.030 に答える