Comment puis-je échanger deux caractères dans un String
? Par exemple, "abcde"
deviendra "bacde"
.Comment échanger des caractères de chaîne en Java?
Répondre
String.replaceAll() ou replaceFirst()
String s = "abcde".replaceAll("ab", "ba")
Lien vers les JavaDocs String API
Depuis String
objets sont immuables, aller à un char[]
via toCharArray
, en échangeant les personnages, puis faire une nouvelle String
de char[]
par le constructeur String(char[])
fonctionnerait.
L'exemple suivant intervertit les premier et deuxième caractères:
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);
Résultat:
abcde
bacde
Nice.Je ne sais pas pourquoi je suis allé directement à StringBuilder au lieu de penser à un tableau char. –
@Jon Skeet: Ma première pensée était en fait de construire une nouvelle chaîne, mais comme les exigences étaient un échange, je pensais que le tableau char serait plus facile. :) – coobird
Arrays, tellement démodé !!! – jjnguy
String.toCharArray() vous donnera un tableau de caractères représentant cette chaîne.
Vous pouvez modifier cela sans modifier la chaîne d'origine (permuter les caractères de votre choix), puis créer une nouvelle chaîne à l'aide de String(char[]).
Notez que les chaînes sont immutables, vous devez donc créer un nouvel objet chaîne.
Cela a été répondu à quelques reprises, mais en voici un plus juste pour le plaisir :-)
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();
}
}
Voici un exemple de code java pour échanger les caractères java récursive .. Vous pouvez obtenir le code de l'échantillon complet à 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;
}
}
Inverser une chaîne n'est pas la même chose que d'échanger deux caractères ... –
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);
}
Voici une solution avec un StringBuilder
. Il prend en charge le remplissage des chaînes résultantes avec une longueur de chaîne inégale avec un caractère de remplissage. Comme vous l'avez deviné, cette méthode est faite pour le swap hexadécimal.
/**
* 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();
}
Je pense que cela devrait aider.
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); // échangera les deux premiers caractères de la chaîne
Veuillez ajouter quelques explications, pas seulement une ligne de code? –
Cela produit un résultat complètement faux. Astuce: les opérateurs de calcul de priorité égale sont laissés associatifs en Java, comme dans presque tous les langages de programmation. –
// vous pouvez le faire ... Astuce: ce code fonctionne dans le cas Longueur de la chaîne supérieure à 2 >>>>>>>> >>>>>>>>>>>>>>> package to.pkgtry; import java.util.Scanner; public class ToTry { public statique Chaîne swap (Chaîne str) { Chaîne ret = "" + str.charAt (1) + str.charAt (0) + str.substring (2); return ret; Public static void principal (String [] args) { Chaîne s = swap ("abcg"); System.out.println (s); } } –
- 1. Vim: comment échanger deux caractères?
- 2. Parsing une chaîne contenant des caractères échappées en Java
- 3. Chaîne Java Remplacement des caractères spéciaux
- 4. Comment faire pour effectuer des chaînes de caractères en Java?
- 5. convertir la chaîne de caractères hexadécimale en entier en Java
- 6. Comment échapper « \ » caractères en Java
- 7. Comment concaténer des caractères dans Java?
- 8. Comment terminer un tableau de caractères avant de convertir en une chaîne en Java
- 9. Comment supprimer des caractères particuliers d'une chaîne en utilisant XSLT?
- 10. caractères imprimables en Java
- 11. Retirez caractères de fin de ligne de Java chaîne
- 12. comment échanger des images en utilisant Cocoa Touch
- 13. Comment faire pour échapper des caractères spéciaux HTML dans Java?
- 14. Java échanger deux clés dans une carte
- 15. Comment obtenir la hauteur de chaîne réelle en Java?
- 16. Conversion automatique des caractères échappés en littéraux de chaîne
- 17. Conversion de caractères ANSI en UTF-8 en Java
- 18. Ajout de caractères non imprimables à une chaîne Java?
- 19. Comment convertir une chaîne TIS-620 en chaîne UTF-8 en Java?
- 20. Comment convertir une chaîne en tableau de caractères dans c (ou) comment extraire une chaîne de caractères char unique?
- 21. Comment échanger des contrôles basés sur une propriété de dépendance?
- 22. Chaîne multiligne contenant des caractères spéciaux en javascript?
- 23. échapper caractères de mise en forme dans Java String.format
- 24. Comment diviser une chaîne avec des caractères blancs comme délimiteurs?
- 25. Traiter des caractères spéciaux dans une URL en utilisant Java
- 26. Comment valider une chaîne en utilisant regex dans Java
- 27. stringWithFormat produit chaîne avec des caractères charabia
- 28. Suppression de caractères Junk de Ruby Chaîne
- 29. comment itérer des caractères individuels dans une chaîne Lua?
- 30. Comment extraire des caractères uniques ou des groupements fermés à partir d'une chaîne en Perl?
Ceci supposait que vous connaîtriez les caractères à échanger à l'avance, ce qui ne semble pas être une solution utilisable dans la plupart des cas. –