¿Cómo puedo intercambiar dos caracteres en un String
? Por ejemplo, "abcde"
se convertirá en "bacde"
.Cómo intercambiar caracteres de cadena en Java?
Respuesta
String.replaceAll() o replaceFirst()
String s = "abcde".replaceAll("ab", "ba")
Enlace a las JavaDocs String API
Desde String
objetos son inmutables, ir a un char[]
través toCharArray
, intercambiando los personajes, a continuación, hacer un nuevo String
de char[]
a través de la String(char[])
constructor iba a funcionar.
el siguiente ejemplo se intercambia el primer y segundo caracteres:
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);
Resultado:
abcde
bacde
Agradable.No estoy seguro de por qué fui directamente a StringBuilder en lugar de pensar en una matriz de caracteres. –
@Jon Skeet: Mi primer pensamiento fue construir un nuevo String, pero como los requisitos eran un intercambio, pensé que el conjunto de caracteres sería más fácil. :) – coobird
Arrays, tan anticuado! – jjnguy
String.toCharArray() le dará una serie de personajes que representan a esta cadena.
Puede cambiar esto sin cambiar la cadena original (intercambie los caracteres que necesite), y luego cree una nueva cadena usando String(char[]).
Tenga en cuenta que las cadenas son inmutables, por lo que debe crear un nuevo objeto de cadena.
Esto ha sido contestada algunas veces, pero aquí hay uno más justo para la diversión :-)
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();
}
}
Aquí es código de ejemplo java para el intercambio de caracteres Java de forma recursiva .. Usted puede obtener código de ejemplo completo en 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;
}
}
Invertir una cadena no es lo mismo que intercambiar dos caracteres ... –
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);
}
}
StringBuilder sb = new StringBuilder("abcde");
sb.setCharAt(0, 'b');
sb.setCharAt(1, 'a');
String newString = 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);
}
Aquí hay una solución con StringBuilder
. Admite el relleno de cadenas resultantes con una longitud de cuerda desigual con un carácter de relleno. Como ya has adivinado, este método está hecho para hexadecimal-nibble-swapping.
/**
* 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<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();
}
creo que esto debería ayudar.
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); // intercambiará los dos primeros caracteres en la cadena
Agregue también algunas explicaciones, ¿no solo una línea de código? –
Esto produce un resultado completamente incorrecto. Sugerencia: los operadores computacionales de igual precedencia se dejan asociativos en Java, como en casi todos los lenguajes de programación. –
// puede hacerlo ... Sugerencia: ese código funciona en caso de que la cadena tenga una longitud mayor a 2 >>>>>>>> >>>>>>>>>>>>>>> paquete a.pkgtry; import java.util.Scanner; clase pública ToTry { public static String swap (String str) { String ret = "" + str.charAt (1) + str.charAt (0) + str.substring (2); return ret; } public static void main (String [] args) { Cadena s = swap ("abcg"); System.out.println (s); } } –
- 1. Vim: ¿cómo puedo intercambiar dos caracteres?
- 2. Cómo reemplazar caracteres en una cadena java?
- 3. reemplazar caracteres especiales en cadena en java
- 4. ¿Cómo verificar el conjunto de caracteres de cadena en Java?
- 5. ¿Cómo puedo detectar caracteres Unicode en una cadena de Java?
- 6. cuente caracteres específicos en una cadena (Java)
- 7. Obtener caracteres de cadena por índice - Java
- 8. ¿Cómo puedo intercambiar subcadenas dentro de una cadena?
- 9. Encuentra ocurrencias de caracteres en una cadena de Java
- 10. Java: ¿Cómo dividir una cadena por una cantidad de caracteres?
- 11. Intercambiar elementos en LinkedList
- 12. Quitar los caracteres no ASCII de cadena en Java
- 13. Colecciones Java convertir una cadena en una lista de caracteres
- 14. Cómo intercambiar valores en NSMutableArray?
- 15. Cómo obtener los últimos caracteres en una cadena en Java, independientemente del tamaño de cadena
- 16. ¿Cómo escapar caracteres especiales HTML en Java?
- 17. Java convertir flujo de caracteres en la cadena humana "legible"
- 18. ¿Cómo eliminar caracteres especiales de una cadena?
- 19. Cómo puedo unir caracteres Unicode en Java
- 20. ¿Cómo eliminar caracteres inválidos de una cadena?
- 21. Eliminar caracteres específicos de la cadena en Java
- 22. cómo escapar "\" caracteres en Java
- 23. ¿Cuál es la forma más sencilla de intercambiar char en una cadena con Python?
- 24. final de caracteres de línea de Java cadena
- 25. ¿Intercambiar con el método de declaración sincronizado en java?
- 26. Poner char en una cadena java para cada N caracteres
- 27. ¿Cómo intercambiar nombres de archivos en Unix?
- 28. Java: tamaño de byte de cadena de caracteres Char versus.
- 29. ¿Cómo convierto una cadena de caracteres en una cadena wchar_t?
- 30. Java- Extracto de una cadena entre dos caracteres especiales
Esto supone que conocerá los caracteres que se intercambiarán con anterioridad, lo que no parece ser una solución utilizable en la mayoría de los casos. –