在Java中交换字符串的字符
正如我们所知, Java中的 String 对象是不可变的(即一旦创建,我们就无法执行任何更改)。
要对存储在 String 对象中的字符串进行修改,我们将其复制到字符数组、StringBuffer 等,并对复制对象进行修改。
在本文中,我们将通过一些方法来交换给定字符串的字符并获得一个新的字符串(带有交换的字符),而原始字符串不受影响。
通过下面的例子让我们看看我们可以交换字符并生成新字符串的一些方法
例子:
方法一(使用 toCharArray)
在此方法中,我们将 String 转换为字符数组并执行所需的交换。
Java
// Java program to demonstrate character swap
// using toCharArray().
public class GFG {
static char[] swap(String str, int i, int j)
{
char ch[] = str.toCharArray();
char temp = ch[i];
ch[i] = ch[j];
ch[j] = temp;
return ch;
}
public static void main(String args[])
{
String s = "geeksforgeeks";
System.out.println(swap(s, 6, s.length() - 2));
System.out.println(swap(s, 0, s.length() - 1));
System.out.println(s);
}
}
Java
// Java program to demonstrate character swap
// using subString()
public class GFG {
static String swap(String str, int i, int j)
{
if (j == str.length() - 1)
return str.substring(0, i) + str.charAt(j)
+ str.substring(i + 1, j) + str.charAt(i);
return str.substring(0, i) + str.charAt(j)
+ str.substring(i + 1, j) + str.charAt(i)
+ str.substring(j + 1, str.length());
}
public static void main(String args[])
{
String s = "geeksforgeeks";
System.out.println(swap(s, 6, s.length() - 2));
System.out.println(swap(s, 0, s.length() - 1));
// Original String doesn't change
System.out.println(s);
}
}
Java
// Java program to demonstrate character swap
// using StringBuilder
public class GFG {
static String swap(String str, int i, int j)
{
StringBuilder sb = new StringBuilder(str);
sb.setCharAt(i, str.charAt(j));
sb.setCharAt(j, str.charAt(i));
return sb.toString();
}
public static void main(String args[])
{
String s = "geeksforgeeks";
System.out.println(swap(s, 6, s.length() - 2));
System.out.println(swap(s, 0, s.length() - 1));
// Original String doesn't change
System.out.println(s);
}
}
输出:
geeksfkrgeeos
seeksforgeekg
geeksforgeeks
方法 2(使用 subString())
我们使用给定字符串的子字符串构建修改后的字符串。
Java
// Java program to demonstrate character swap
// using subString()
public class GFG {
static String swap(String str, int i, int j)
{
if (j == str.length() - 1)
return str.substring(0, i) + str.charAt(j)
+ str.substring(i + 1, j) + str.charAt(i);
return str.substring(0, i) + str.charAt(j)
+ str.substring(i + 1, j) + str.charAt(i)
+ str.substring(j + 1, str.length());
}
public static void main(String args[])
{
String s = "geeksforgeeks";
System.out.println(swap(s, 6, s.length() - 2));
System.out.println(swap(s, 0, s.length() - 1));
// Original String doesn't change
System.out.println(s);
}
}
输出:
geeksfkrgeeos
seeksforgeekg
geeksforgeeks
方法 3(使用 StringBuilder 或 StringBuffer)
在此方法中,您可以根据情况使用 StringBuilder 或 StringBuffer。请参阅Java中的 String vs StringBuilder vs StringBuffer 来决定何时使用哪一个。
Java
// Java program to demonstrate character swap
// using StringBuilder
public class GFG {
static String swap(String str, int i, int j)
{
StringBuilder sb = new StringBuilder(str);
sb.setCharAt(i, str.charAt(j));
sb.setCharAt(j, str.charAt(i));
return sb.toString();
}
public static void main(String args[])
{
String s = "geeksforgeeks";
System.out.println(swap(s, 6, s.length() - 2));
System.out.println(swap(s, 0, s.length() - 1));
// Original String doesn't change
System.out.println(s);
}
}
输出:
geeksfkrgeeos
seeksforgeekg
geeksforgeeks
输出:
geeksfkrgeeos
seeksforgeekg
geeksforgeeks