如何在String
中交换两个字符?例如,"abcde"
将变为"bacde"
。
答案 0 :(得分:46)
由于String
个对象是不可变的,因此通过toCharArray
转到char[]
,交换字符,然后通过{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);
{3}}构造函数可以工作。
以下示例交换第一个和第二个字符:
abcde
bacde
结果:
{{1}}
答案 1 :(得分:27)
'在'字符串中,你不能。字符串是不可变的。您可以使用以下命令轻松创建第二个字符串:
String second = first.replaceFirst("(.)(.)", "$2$1");
答案 2 :(得分:6)
这已经回答了几次,但这里只是为了好玩的一个: - )
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();
}
}
答案 3 :(得分:4)
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);
}
答案 4 :(得分:2)
String.toCharArray()将为您提供表示此字符串的字符数组。
您可以在不更改原始字符串(交换所需的任何字符)的情况下更改此设置,然后使用String(char[])创建新字符串。
请注意,字符串是 immutable ,因此您必须创建一个新的字符串对象。
答案 5 :(得分:2)
StringBuilder sb = new StringBuilder("abcde");
sb.setCharAt(0, 'b');
sb.setCharAt(1, 'a');
String newString = sb.toString();
答案 6 :(得分:1)
以下是用于递归交换java字符的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;
}
}
答案 7 :(得分:0)
答案 8 :(得分:0)
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);
}
}
答案 9 :(得分:0)
这是一个StringBuilder
的解决方案。它支持使用填充字符填充带有不均匀字符串长度的字符串。正如您所猜测的那样,这种方法是针对十六进制 - 半字节交换的。
/**
* 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();
}
答案 10 :(得分:0)
public static String shuffle(String s) {
List<String> letters = Arrays.asList(s.split(""));
Collections.shuffle(letters);
StringBuilder t = new StringBuilder(s.length());
for (String k : letters) {
t.append(k);
}
return t.toString();
}
答案 11 :(得分: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)));
}
}
答案 12 :(得分:0)
///这是如何按字母顺序排序字符串的一种非常基本的方法,它不需要花哨的东西,非常适合学校使用
package string_sorter;
公共类String_Sorter {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
String word = "jihgfedcba";
for (int endOfString = word.length(); endOfString > 0; endOfString--) {
int largestWord = word.charAt(0);
int location = 0;
for (int index = 0; index < endOfString; index++) {
if (word.charAt(index) > largestWord) {
largestWord = word.charAt(index);
location = index;
}
}
if (location < endOfString - 1) {
String newString = word.substring(0, location) + word.charAt(endOfString - 1) + word.substring(location + 1, endOfString - 1) + word.charAt(location);
word = newString;
}
System.out.println(word);
}
System.out.println(word);
}
}
答案 13 :(得分:0)
s = s.substring(0, firstChar)
+s.charAt(secondChar)
+s.substring(firstChar + 1, secondChar)
+s.charAt(firstChar)
+s.substring(secondChar+1);
答案 14 :(得分:-2)
return str.charAt(1)+ str.charAt(0)+ str.substring(2); //将交换字符串
中的前两个字符