在 Java 中交换字符串的字符
原文:https://www . geesforgeks . org/swapping-characters-string-Java/
正如我们所知,Java 中字符串的对象是不可变的(也就是说,一旦它被创建,我们就不能执行任何更改)。
为了对存储在 string 对象中的字符串进行修改,我们将其复制到一个字符数组、StringBuffer 等,并对复制对象进行修改。
在本文中,我们将通过一些方法来交换给定字符串的字符,并获得一个新字符串(带有交换的字符),而原始字符串不受影响。
通过下面的例子让我们看到一些方法,通过这些方法我们可以交换字符并生成新的字符串 例子: 方法 1(使用 toCharArray) 在这个方法中,我们将字符串转换成字符数组并执行所需的交换。
// 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);
}
}
Output:
geeksfkrgeeos
seeksforgeekg
geeksforgeeks
方法 2(使用 subString()) 我们使用给定字符串的子字符串构建修改后的字符串。
// 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);
}
}
Output:
geeksfkrgeeos
seeksforgeekg
geeksforgeeks
方法 3(使用 StringBuilder 或 StringBuffer) 在这个方法中,你可以根据情况使用 StringBuilder 或 StringBuffer。参见 Java 中的String vs StringBuilder vs StringBuffer 来决定何时使用哪一个。
// 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);
}
}
Output:
geeksfkrgeeos
seeksforgeekg
geeksforgeeks
输出:
geeksfkrgeeos
seeksforgeekg
geeksforgeeks
本文由 Sumit Ghosh 供稿。如果你喜欢 GeeksforGeeks 并想投稿,你也可以使用contribute.geeksforgeeks.org写一篇文章或者把你的文章邮寄到 contribute@geeksforgeeks.org。看到你的文章出现在极客博客主页上,帮助其他极客。
如果你发现任何不正确的地方,或者你想分享更多关于上面讨论的话题的信息,请写评论。
版权属于:月萌API www.moonapi.com,转载请注明出处