正如我们所知 Java中的字符串 是不可变的(即,一旦其创建,我们就无法执行任何更改)。 要修改存储在字符串对象中的字符串,我们将其复制到字符数组、StringBuffer等中,并对复制对象进行修改。 在本文中,我们将介绍一些方法来交换给定字符串的字符,并在原始字符串不受影响的情况下获得一个新字符串(使用交换的字符)。 通过下面的例子,我们可以看到一些方法,通过这些方法我们可以交换字符,生成新的字符串 例如: 方法1(使用toCharArray) 在这种方法中,我们将字符串转换为字符数组,并执行所需的交换。
null
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); } } |
输出:
geeksfkrgeeosseeksforgeekggeeksforgeeks
方法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); } } |
输出:
geeksfkrgeeosseeksforgeekggeeksforgeeks
方法3(使用StringBuilder或StringBuffer) 在这种方法中,您可以根据情况使用StringBuilder或StringBuffer。看见 Java中的字符串、StringBuilder和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); } } |
输出:
geeksfkrgeeosseeksforgeekggeeksforgeeks
输出:
geeksfkrgeeosseeksforgeekggeeksforgeeks
本文由 苏米特·戈什 .如果你喜欢GeekSforgek,并想贡献自己的力量,你也可以使用 写极客。组织 或者把你的文章寄去评论-team@geeksforgeeks.org.看到你的文章出现在Geeksforgeks主页上,并帮助其他极客。 如果您发现任何不正确的地方,或者您想分享有关上述主题的更多信息,请写下评论。
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END