3

文字列の部分文字列を取得し、それを逆にして結果を出力する Java メソッドを作成するのを手伝ってくれる人はいますか?

StringBuilder は String よりも優れていると思いますが、私の問題は StringBuilder.substring() が String を返すことです。StringBuilder を引き続き使用するには、新しい StringBuilder オブジェクトを作成して StringBuilder.reverse() 部分を実行する必要があります。

誰でもこれに対するより良い解決策はありますか?

    public static void main(String[] args) {
    StringBuilder sb = new StringBuilder("abcdefgh");

    sb = new StringBuilder(sb.subSequence(2, 5));

    sb.reverse(); 
    System.out.println(sb.toString());
}
4

5 に答える 5

1

これを使用できます

public String reverseString(String normalString) {
   StringBuilder sb = new StringBuilder();
   for(int i = normalString.length() - 1; i >= 0; --i)
     sb.append(normalString.charAt(i));
   return sb.toString();
 }
于 2013-04-08T10:39:37.900 に答える
0

次のようなことを試すことができます:

String s = "Achintya";
List<String> myList = new ArrayList<String>(Arrays.asList(s.split("")));
Collections.sort(myList, Collections.reverseOrder());
System.out.println(myList);
于 2013-04-08T11:17:22.777 に答える
0

あなたの答えは十分です。部分文字列メソッドを使用する場合、これも機能します。

public static void main(String[] args) 
{
StringBuilder revWord = new StringBuilder("abcdefgh".substring(2,5));
revWord.reverse(); 
System.out.println(revWord);
}
于 2015-03-28T15:11:46.343 に答える
0

操作を逆にするだけです。

StringBuilder sb2 = new StringBuilder("abcdefgh");
sb2.reverse();
System.out.println(sb2.subSequence(sb2.length()-5, sb2.length()-2));
于 2015-06-26T00:06:36.513 に答える
0

反転されていない String の および インデックスstartをユーザーに入力してもらいたい場合は、インデックス値を再マッピングすることで簡単に実現できます。end

以下は、StringBuilderあなたが求めた1の実例です。

public static void main(String[] args) {
    final StringBuilder sb = new StringBuilder("abcdefgh");
    final int startIndex = 2;
    final int endIndex = 5;

    sb.reverse();
    final String output = substring(sb.toString(), startIndex, endIndex);
    System.out.println("Result: " + output);
}

//Retrieve the substring of a reversed string
private static String substring(String input, int start, int end) {
    start = map(start, 0, input.length(), input.length(), 0);
    end = map(end, 0, input.length(), input.length(), 0);

    String substring = input.substring(end, start);
    return substring;
}

//Map value from the min,max range, to the new minRange-maxRange range.
private static int map(float value, float min, float max, float minRange, float maxRange) {
    return Math.round(minRange + (maxRange - minRange) * ((value - min) / (max - min)));
}
于 2013-04-08T12:06:53.653 に答える