0

次の文字列を考慮して、その方法で部分文字列を取得したいと思います。

String str="abcdefghij"

返された部分文字列:

 acegi 

つまり、最初の文字列 str の 2 文字ごとです。次に、同じ理由で、最初の文字列 str の 3 文字ごとの部分文字列を取得します。

そして、周波数fの同じ質問

これは私の現在の方法ですが、実際にはエラーがあります:

 private static String subString(String str,int freq){
        String subStr=null;

        for(int i = 0; i < str.length(); freq++){
          subStr= subStr + str[i];
        }
     return subStr;
 }

また、これらのタスクのための既存のメソッドがいくつかあるのでしょうか?

4

4 に答える 4

2

それを行うための組み込みメソッドがわかりません。StringBuilder を使用して、多くの一時的な文字列を作成しないようにし、適切な容量で初期化できます。

private static String subString(String str, int freq) {
    //make it the right capacity to avoid reallocations
    StringBuilder subStr = new StringBuilder(str.length() / freq + 1);

    for (int i = 0; i < str.length(); i += freq) {
        subStr.append(str.charAt(i));
    }
    return subStr.toString();
}
于 2013-01-13T10:29:11.430 に答える
1

freq文字列内のすべての文字が必要です。これを試して

    String subStr="";

    for(int i = 0; i < str.length(); i+=freq){
      subStr= subStr + str.charAt(i);
    }

編集: StringBuilder を使用することをお勧めします。@asgoth の回答を参照してください。

于 2013-01-13T10:23:47.713 に答える
1

繰り返しには、StringBuilder を使用してください。私はあなたが使用するような構造体を見たことがあります.アプリケーションサーバーを爆破します.

private static String subString(String str,int freq){
    StringBuilder out = new StringBuilder();

    for(int i = 0; i < str.length(); i+=freq){
      out.append(str.charAt(i));
    }
    return out.toString();
}
于 2013-01-13T10:29:22.610 に答える
0
private static subString(String str, int freq){
String subStr;
for(int i=0;i<str.length();i+=freq){
  subStr=subStr+str.charAt(i);
}
return subStr;
}

ご依頼方法はこちら。組み込みのものはありません。

于 2013-01-13T10:28:21.123 に答える