33

で2 つの文字を入れ替えるにはどうすればよいStringですか? たとえば、"abcde"になり"bacde"ます。

4

16 に答える 16

57

Stringオブジェクトは不変であるため、viachar[]に移動しtoCharArray、文字を交換してから、コンストラクターを介して新しいStringfromを作成すると機能します。char[]String(char[])

次の例では、最初の文字と 2 番目の文字を入れ替えています。

String originalString = "abcde";

char[] c = originalString.toCharArray();

// Replace with a "swap" function, if desired:
char temp = c[0];
c[0] = c[1];
c[1] = temp;

String swappedString = new String(c);

System.out.println(originalString);
System.out.println(swappedString);

結果:

abcde
bacde
于 2009-06-05T14:39:01.333 に答える
30

文字列の「中」では、できません。文字列は不変です。次のコマンドを使用して、2 番目の文字列を簡単に作成できます。

 String second = first.replaceFirst("(.)(.)", "$2$1");
于 2009-06-05T14:38:05.873 に答える
10

これは数回回答されていますが、ここでは楽しみのためにもう 1 つ :-)

public class Tmp {
    public static void main(String[] args) {
        System.out.println(swapChars("abcde", 0, 1));
    }
    private static String swapChars(String str, int lIdx, int rIdx) {
        StringBuilder sb = new StringBuilder(str);
        char l = sb.charAt(lIdx), r = sb.charAt(rIdx);
        sb.setCharAt(lIdx, r);
        sb.setCharAt(rIdx, l);
        return sb.toString();
    }
}
于 2009-06-05T20:02:44.383 に答える
7
static String  string_swap(String str, int x, int y)
{

    if( x < 0 || x >= str.length() || y < 0 || y >= str.length())
    return "Invalid index";

    char arr[] = str.toCharArray();
    char tmp = arr[x];
    arr[x] = arr[y];
    arr[y] = tmp;

    return new String(arr);
}
于 2015-10-10T03:10:46.007 に答える
2

String.toCharArray()は、この文字列を表す文字の配列を提供します。

元の文字列を変更せずにこれを変更し (必要な文字を交換)、String(char[])を使用して新しい文字列を作成できます。

文字列はimmutableであるため、新しい文字列オブジェクトを作成する必要があることに注意してください。

于 2009-06-05T14:40:14.387 に答える
1

Java char を再帰的に交換するための Java サンプル コードを次に示します。完全なサンプル コードは、 http://java2novice.com/java-interview-programs/string-reverse-recursive/で入手できます。

public String reverseString(String str){

    if(str.length() == 1){
        return str;
    } else {
        reverse += str.charAt(str.length()-1)
                +reverseString(str.substring(0,str.length()-1));
        return reverse;
    }
}
于 2012-07-24T17:15:18.137 に答える
0

これは役立つはずだと思います。

import java.util.*;

public class StringSwap{

public static void main(String ar[]){
    Scanner in = new Scanner(System.in);
    String s = in.next();
    System.out.println(new StringBuffer(s.substring(0,2)).reverse().toString().concat(s.substring(2)));
  }
}
于 2016-07-25T07:26:07.380 に答える
0

Here's a solution with a StringBuilder. It supports padding resulting strings with uneven string length with a padding character. As you've guessed this method is made for hexadecimal-nibble-swapping.

/**
 * Swaps every character at position i with the character at position i + 1 in the given
 * string.
 */
public static String swapCharacters(final String value, final boolean padding)
{
   if ( value == null )
   {
      return null;
   }

   final StringBuilder stringBuilder = new StringBuilder();
   int posA = 0;
   int posB = 1;
   final char padChar = 'F';

   // swap characters
   while ( posA < value.length() && posB < value.length() )
   {
      stringBuilder.append( value.charAt( posB ) ).append( value.charAt( posA ) );
      posA += 2;
      posB += 2;
   }

   // if resulting string is still smaller than original string we missed the last
   // character
   if ( stringBuilder.length() < value.length() )
   {
      stringBuilder.append( value.charAt( posA ) );
   }

   // add the padding character for uneven strings
   if ( padding && value.length() % 2 != 0 )
   {
      stringBuilder.append( padChar );
   }

   return stringBuilder.toString();
}
于 2015-10-15T11:32:20.127 に答える
0

String.replaceAll() または replaceFirst()

String s = "abcde".replaceAll("ab", "ba")

JavaDocs文字列 APIへのリンク

于 2009-06-05T14:37:06.733 に答える
-1

次のコード行は、 の最初の 2 文字を入れ替えますstr

return str.charAt(1) + str.charAt(0) + str.substring(2);
于 2016-08-21T13:42:53.723 に答える
-1
import java.io.*;
class swaping
{
     public static void main(String args[]) 
     {
         String name="premkumarg";
         int len=name.length();
         char[] c = name.toCharArray();
         for(int i=0;i<len-1;i=i+2)
         {
             char temp= c[i];
             c[i]=c[i+1];
             c[i+1]=temp;
         }

         System.out.println("Swapping string is: ");
         System.out.println(c);

    }
}
于 2013-09-12T09:17:34.043 に答える