Come posso scambiare due caratteri in un String
? Ad esempio, "abcde"
diventerà "bacde"
.Come scambiare i caratteri stringa in Java?
risposta
String.replaceAll() o replaceFirst()
String s = "abcde".replaceAll("ab", "ba")
Link alle JavaDocs String API
Dal String
oggetti sono immutabili, di andare a un char[]
via toCharArray
, scambiando i caratteri, quindi facendo una nuova String
dal char[]
attraverso il String(char[])
costruttore avrebbe funzionato.
L'esempio seguente scambia il primo e secondo caratteri:
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);
Risultato:
abcde
bacde
Bello.Non sono sicuro del motivo per cui sono andato direttamente a StringBuilder invece di pensare a un array di caratteri. –
@Jon Skeet: il mio primo pensiero è stato in realtà quello di creare una nuova stringa, ma poiché i requisiti erano uno scambio, ho pensato che l'array di caratteri sarebbe stato più semplice. :) – coobird
Array, così vecchio stile !!! – jjnguy
String.toCharArray() vi darà un array di caratteri che rappresentano questa stringa.
È possibile modificare questo senza modificare la stringa originale (scambiare eventuali caratteri necessari) e quindi creare una nuova stringa utilizzando String(char[]).
Si noti che le stringhe sono immutable, quindi è necessario creare un nuovo oggetto stringa.
Questo è stato risposto un paio di volte, ma qui è più uno solo per divertimento :-)
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();
}
}
Ecco java codice di esempio per lo scambio di caratteri Java in modo ricorsivo .. È possibile ottenere il codice di esempio completo al 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;
}
}
Invertire una stringa non è la stessa cosa di scambiare due caratteri ... –
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);
}
Ecco una soluzione con un StringBuilder
. Supporta il riempimento di stringhe risultanti con una lunghezza di stringa non uniforme con un carattere di riempimento. Come hai intuito, questo metodo è realizzato per lo swap esadecimale-nibble.
/**
* 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();
}
penso che questo dovrebbe aiutare.
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); // scambierà i primi due caratteri nella stringa
Per favore aggiungi anche qualche spiegazione, non solo una riga di codice? –
Questo produce un risultato completamente sbagliato. Suggerimento: gli operatori computazionali di eguale precedenza sono lasciati associativi in Java, come in quasi tutti i linguaggi di programmazione di sempre. –
// puoi farlo ... Suggerimento: quel codice funziona nel caso in cui la lunghezza della stringa sia maggiore di 2 >>>>>>>> >>>>>>>>>>>>>>> pacchetto to.pkgtry; import java.util.Scanner; classe pubblica 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) { String s = swap ("abcg"); System.out.println (s); } } –
- 1. Come leggere i caratteri in una stringa in java
- 2. Come posso rilevare i caratteri unicode in una stringa Java?
- 3. Come abbinare i caratteri unicode in Java
- 4. sostituire i caratteri speciali nella stringa in java
- 5. Come mescolare i caratteri in una stringa
- 6. Scambia caratteri nella stringa
- 7. Come decodificare i caratteri XML speciali codificati in una stringa?
- 8. Stringa Java rimuovere tutti i caratteri non numerici
- 9. Java rimuovere i caratteri non latini-base dalla stringa
- 10. Rimuovere tutti i "caratteri word" non da una stringa in Java, lasciando caratteri accentati?
- 11. Come posso sostituire i caratteri Unicode non stampabili in Java?
- 12. Come dividere i caratteri Tamil in una stringa in PHP
- 13. Come scambiare valori in NSMutableArray?
- 14. Catturare i caratteri jolly in Java generici
- 15. Converti array di caratteri in una stringa in Java
- 16. rimuovere tutti i caratteri speciali in java
- 17. Come ottenere gli ultimi caratteri in una stringa in Java, indipendentemente dalle dimensioni della stringa
- 18. Come ordinare i caratteri di una stringa in ordine alfabetico?
- 19. Come rimuovere i caratteri speciali dalla stringa in Swift 2?
- 20. Come utilizzare i caratteri Unicode in una stringa python
- 21. Come si convertono i caratteri stringa in un elenco?
- 22. Come ottenere tutti i caratteri dopo l'ultimo '-' in una stringa
- 23. Come si rimuovono i caratteri ripetuti in una stringa
- 24. Quanti caratteri può avere una stringa Java?
- 25. Come sostituire tutti i caratteri in una stringa Java con le stelle
- 26. Aggiunta di caratteri non stampabili a una stringa in Java?
- 27. Come scambiare i frammenti con layout diversi in Android?
- 28. Come scambiare i nomi dei file in Unix?
- 29. Come scambiare i nodi figlio DOM in JavaScript?
- 30. Come filtrare una stringa Java per ottenere solo caratteri alfabetici?
Questo presuppone che si conosceranno i caratteri da scambiare prima del tempo, il che non sembra una soluzione utilizzabile nella maggior parte dei casi. –