3

以下のコードを検討してください。

public class SentenceReversal {

    /**
     * @param args
     */
    public static void main(String[] args) {


        String[] parts = "This is an interview Question".split("\\b");
        StringBuilder sb = new StringBuilder();
        for (int i = parts.length; i --> 0 ;) {
            sb.append(parts[i]);
        }
        System.out.println("[" + sb.toString() + "]");

}
}

"\b" は分割機能で何をしていますか? それを削除すると、次の結果が生成されます(つまり、split("") のみを使用することを意味します)。

[noitseuQ weivretni na si sihT]

また、`-->' 演算子は for ループで何をしているのですか? よくわかりませんでした。私の質問を理解するのを手伝ってください。

ありがとう

4

1 に答える 1

6

String.split()正規表現に基づいて文字列を分割します。

\bは正規表現であり、単語の境界、つまり行頭、行末、スペース、句読点などを示し\\bます。Java は\別の でエスケープする必要があるため、これは as として渡されます\

split() を使用""すると、基本的に何も分割されないため、入力文字列は配列内の個々の文字に分割され、逆に反復されるため、すべての文字 (単語ではなく) が逆になった文字列が得られます。

@LuiggiMendozaの観察について詳しく説明するだけです

i --> 0 // gets interpreted as
i-- > 0 // i.e. it uses a post-fix decrement operator

これは、 の値が最初iに比較され0、次にi = i - 1発生することを意味します。

また、StringBuilder代わりにStringBuffer(スレッドセーフだが遅い) または単純な連結 (Java文字列プールStringに不要な文字列が多すぎる) を使用していることにも注意してください。

于 2013-05-21T05:03:03.643 に答える