1

索引に従って文に中かっこを入れる必要があります。私の入力文が次のとおり"I am a girl and I live in Nepal."であるとします。

[12, 15], [2, 4], [23, 25]

これらのインデックスは、単語"am""and"および に"in"それぞれ対応しています。必要な出力は次のとおりです。

"I {am} a girl {and} I live {in} Nepal."  

使用してみsubstringましたが、最初の単語を置き換えた後、文字を2つのインデックスだけシフトします。これが問題です。

必要な出力を取得するためのソリューションを誰かに提供できますか?

4

3 に答える 3

1

String.substring私はそのインデックスで aが機能するはずだと簡単に思いますString.replace

インデックスの 1 つのコードは次のとおりです - [2, 4]: -

String str = "I am a girl and I live in Nepal.";

String str2 = str.replace(str.substring(2, 4), "{" + str.substring(2, 4) + "}");
System.out.println(str2);   // str is not changed.

出力: -

I {am} a girl and I live in Nepal.

そのインデックスがわからず、単語しかない場合は、String.indexOfメソッドを使用してそれを見つけることができます。

これがより良い解決策です: -

    String str = "I am a girl and I live in Nepal.";

    int startIndex = str.indexOf("am");
    int endIndex = startIndex + "am".length();

    str = str.replace(str.substring(startIndex, endIndex), 
                "{" + str.substring(startIndex, endIndex) + "}");

    System.out.println(str);
于 2012-11-16T10:36:35.583 に答える
1

私は...するだろう:

  1. 元の文字列を文字に分割します。
  2. 各文字を反復処理してStringBuilderに書き込みます
  3. 各文字を書き込む前に、その文字のインデックスが開始中かっこの位置に対応しているかどうかを確認し、そうであれば開始中かっこを StringBuilder に書き込みます。
  4. 各文字を書き込んだ後、その文字のインデックスが終了ブレース位置に対応するかどうかを確認し、そうであれば終了ブレースを StringBuilder に書き込みます

上記は、元の文字列 (または、作業中の文字列) を変更しません。元の文字から文字ごとに新しい文字列を構築します。

于 2012-11-16T10:38:27.887 に答える