如何在Java中交换String字符?

use*_*023 27 java string swap

如何在一个?中交换两个字符String?例如,"abcde"将成为"bacde".

coo*_*ird 47

由于String对象是不可改变的,去一个char[]通过toCharArray,调换角色,然后又做了新的Stringchar[]通过String(char[])构造函数会工作.

以下示例交换第一个和第二个字符:

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);
Run Code Online (Sandbox Code Playgroud)

结果:

abcde
bacde
Run Code Online (Sandbox Code Playgroud)

  • 尼斯.不知道为什么我直接去StringBuilder而不是考虑一个char数组. (2认同)
  • @jjnguy:呵呵,是的,但它完成了工作;) (2认同)

too*_*kit 27

'在'字符串中,你不能.字符串是不可变的.您可以轻松地创建第二个字符串:

 String second = first.replaceFirst("(.)(.)", "$2$1");
Run Code Online (Sandbox Code Playgroud)

  • 我喜欢你正则表达式的外观. (35认同)

小智 8

这已经回答了几次,但这里还有一个只是为了好玩:-)

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();
    }
}
Run Code Online (Sandbox Code Playgroud)


And*_*rey 7

StringBuilder sb = new StringBuilder("abcde");
sb.setCharAt(0, 'b');
sb.setCharAt(1, 'a');
String newString = sb.toString();
Run Code Online (Sandbox Code Playgroud)


小智 5

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);
}
Run Code Online (Sandbox Code Playgroud)


Agi*_*Jon 0

String.replaceAll() 或replaceFirst()

String s = "abcde".replaceAll("ab", "ba")
Run Code Online (Sandbox Code Playgroud)

链接到 JavaDocs String API