如何在Java中交换String字符?
如何在String
交换两个字符? 例如, "abcde"
将变为"bacde"
。
由于String
对象是不可变的,通过toCharArray
char[]
,交换字符,然后通过String(char[])
构造函数从char[]
创建一个新的String
将起作用。
以下示例交换第一个和第二个字符:
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
‘在’字符串中,你不能。 字符串是不可变的。 您可以轻松地创建第二个字符串:
String second = first.replaceFirst("(.)(.)", "$2$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(); } }
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); }
String.toCharArray()将为您提供表示此字符串的字符数组。
您可以在不更改原始字符串(交换所需的任何字符)的情况下更改此设置,然后使用String(char [])创建新字符串。
请注意,字符串是不可变的 ,因此您必须创建一个新的字符串对象。
StringBuilder sb = new StringBuilder("abcde"); sb.setCharAt(0, 'b'); sb.setCharAt(1, 'a'); String newString = sb.toString();
String.replaceAll()或replaceFirst()
String s = "abcde".replaceAll("ab", "ba")
链接到JavaDocs String API
以下是用于递归交换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; } }
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
这是一个使用StringBuilder
的解决方案。 它支持使用填充字符填充带有不均匀字符串长度的字符串。 正如您所猜测的那样,这种方法是针对hex – 半字节交换的。
/** * 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(); }
public static String shuffle(String s) { List letters = Arrays.asList(s.split("")); Collections.shuffle(letters); StringBuilder t = new StringBuilder(s.length()); for (String k : letters) { t.append(k); } return t.toString(); }
我认为这应该有所帮助。
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))); } }
return str.charAt(1)+ str.charAt(0)+ str.substring(2); //将交换字符串中的前两个字符