2010-08-05 18 views
72

Ho un string="name"; Voglio convertirlo in un array di stringhe. Come faccio? C'è qualche funzione java integrata? Posso farlo manualmente ma sto cercando una funzione java integrata.conversione stringa da stringa a stringa in java

Voglio un array in cui ogni carattere della stringa sarà una stringa. come char 'n' sarà ora stringa "n" memorizzata in un array.

+6

Immagino che non vuol dire ' String [] ary = new String [] {"name"}; ', quale operazione ti serve? dividere in caratteri, ad esempio? – rsp

+0

Intendi un array di stringhe? Come potresti avere una funzione per questo, sarebbe solo: String [] array = {"Nome"}; o intendi un array di caratteri? – Woody

+1

Voglio un array in cui ogni carattere della stringa sarà una stringa. come char 'n' sarà ora stringa "n" memorizzata in un array – riyana

risposta

140

Per iniziare si spegne sul tuo incarico, String.split divide le stringhe in un'espressione regolare, questa espressione può essere una stringa vuota:

String[] ary = "abc".split(""); 

rendimenti la matrice:

(java.lang.String[]) [, a, b, c] 

Come liberarsi del vuoto 1a voce è lasciata come esercizio per il lettore :-)

Nota: in Java 8, il primo elemento vuoto non è più incluso.

+14

Nota: utilizzando jdk8, la prima voce vuota non è più inclusa nell'array risultante. Vedi http: // StackOverflow.it/questions/22718744/why-does-split-in-jdk-8-sometimes-removes-empty-strings-if-they-are-at-start-of –

4

String Array = array di caratteri?

Oppure avete una stringa con più parole ognuna delle quali dovrebbe essere un elemento dell'array?

String[] array = yourString.split(wordSeparator);

+0

voglio un array in cui ogni carattere del la stringa sarà una stringa. come char 'n' sarà ora stringa "n" memorizzata in un array – riyana

37
String strName = "name"; 
String[] strArray = new String[] {strName}; 
System.out.println(strArray[0]); //prints "name" 

La seconda linea alloca un array di stringhe con la lunghezza di 1. Si noti che non è necessario specificare una lunghezza da soli, come ad esempio:

String[] strArray = new String[1]; 

, invece, la lunghezza è determinata dal numero di elementi nell'iniitalizer. Utilizzando

String[] strArray = new String[] {strName, "name1", "name2"}; 

crea un array con una lunghezza di 3.

+16

In realtà non risponde alla domanda. – atamanroman

+1

Controlla la cronologia delle revisioni della domanda e vedrai che la domanda sta chiedendo qualcosa di diverso prima che fosse modificata. Questa risposta risponde alla prima versione. – f1sh

12

Credo che semplicemente non c'è bisogno di esso, in quanto non sarà possibile ottenere più semplice di

String[] array = {"name"}; 

Naturalmente se si insiste, si potrebbe scrivere:

static String[] convert(String... array) { 
    return array; 
} 

String[] array = convert("name","age","hobby"); 

[Edit] Se si desidera una sola lettera Strings , È possibile utilizzare:

String[] s = "name".split(""); 

Sfortunatamente non s [0] sarà vuota, ma dopo questo le lettere n, a, m, e seguiranno. Se questo è un problema, puoi utilizzare per es. System.arrayCopy per sbarazzarsi della prima voce dell'array.

+0

Voglio un array in cui ogni carattere della stringa sarà a sua volta una stringa. come char 'n' sarà ora stringa "n" memorizzata in un array – riyana

+0

Vedere il mio [Modifica] ... – Landei

+0

@Landei Ho questa stringa Data = "2013/01/05" e quando uso .split ("/ "), non restituisce la stringa vuota come [0] e funziona correttamente. C'è qualche differenza tra il mio splitter di espressioni regolari e il tuo? – Behzad

11

Supponendo che si vuole veramente un array di stringhe di un solo carattere (non un char[] o Character[])

1.Utilizzando una regex:

public static String[] singleChars(String s) { 
    return s.split("(?!^)"); 
} 

Il lookahead negativo larghezza zero impedisce il pattern matching all'inizio dell'ingresso, in modo da non ottenere una stringa vuota leader.

2. Utilizzando Guava:

import java.util.List; 

import org.apache.commons.lang.ArrayUtils; 

import com.google.common.base.Functions; 
import com.google.common.collect.Lists; 
import com.google.common.primitives.Chars; 

// ... 

public static String[] singleChars(String s) { 
    return 
     Lists.transform(Chars.asList(s.toCharArray()), 
         Functions.toStringFunction()) 
      .toArray(ArrayUtils.EMPTY_STRING_ARRAY); 
} 
+0

Che regexp è il migliore IMO. Attenzione, Java 8 ha risolto comunque quel particolare problema. – shkschneider

10
String data = "abc"; 
String[] arr = explode(data); 

public String[] explode(String s) { 
    String[] arr = new String[s.length]; 
    for(int i = 0; i < s.length; i++) 
    { 
     arr[i] = String.valueOf(s.charAt(i)); 
    } 
    return arr; 
} 
1
/** 
* <pre> 
* MyUtils.splitString2SingleAlphaArray(null, "") = null 
* MyUtils.splitString2SingleAlphaArray("momdad", "") = [m,o,m,d,a,d] 
* </pre> 
* @param str the String to parse, may be null 
* @return an array of parsed Strings, {@code null} if null String input 
*/ 
public static String[] splitString2SingleAlphaArray(String s){ 
    if (s == null) 
     return null; 
    char[] c = s.toCharArray(); 
    String[] sArray = new String[c.length]; 
    for (int i = 0; i < c.length; i++) { 
     sArray[i] = String.valueOf(c[i]); 
    } 
    return sArray; 
} 

Metodo String.split genererà 1 ° vuota, è necessario rimuoverlo dalla matrice. È noioso.

1

Potreste usare string.chars().mapToObj(e -> new String(new char[] {e}));, anche se questo è abbastanza lunga e funziona solo con Java 8. Qui ci sono un paio di metodi:

string.split(""); (Has an extra whitespace character at the beginning of the array if used before Java 8) string.split("|"); string.split("(?!^)"); Arrays.toString(string.toCharArray()).substring(1, string.length() * 3 + 1).split(", ");

L'ultimo è solo inutilmente lungo , è solo per divertimento!

2

Un ulteriore metodo:

Come già accennato, è possibile convertire la stringa "nome" originale in un array di caratteri abbastanza facilmente:

String originalString = "name"; 
char[] charArray = originalString.toCharArray(); 

Per continuare questa linea di pensiero, si potrebbe quindi convertire l'array char a un array di stringhe:

String[] stringArray = new String[charArray.length]; 
for (int i = 0; i < charArray.length; i++){ 
    stringArray[i] = String.valueOf(charArray[i]); 
} 

a questo punto, il vostro StringArray sarà riempito con i valori originali dalla stringa "nome" originale. Per esempio, ora chiamando

System.out.println(stringArray[0]); 

restituirà il valore "n" (come String) in questo caso.

2

La divisione di una stringa vuota con String.split() restituisce un array di elementi singolo contenente una stringa vuota. Nella maggior parte dei casi probabilmente preferiresti ottenere un array vuoto, o un null se hai passato un null, che è esattamente quello che ottieni con org.apache.commons.lang3.StringUtils.split(str).

import org.apache.commons.lang3.StringUtils; 

StringUtils.split(null)  => null 
StringUtils.split("")   => [] 
StringUtils.split("abc def") => ["abc", "def"] 
StringUtils.split("abc def") => ["abc", "def"] 
StringUtils.split(" abc ") => ["abc"] 

Un'altra opzione è Google guava Splitter.split() e Splitter.splitToList() che restituiscono un iteratore e una lista corrispondente. A differenza della versione di Apache Splitter genera un NPE su null:

import com.google.common.base.Splitter; 

Splitter SPLITTER = Splitter.on(',').trimResults().omitEmptyStrings(); 

SPLITTER.split("a,b, c , , ,, ")  => [a, b, c] 
SPLITTER.split("")      => [] 
SPLITTER.split(" ")     => [] 
SPLITTER.split(null)     => NullPointerException 

Se si desidera un elenco piuttosto che un iteratore quindi utilizzare Splitter.splitToList().

7

in Java 8, v'è un metodo con il quale si può fare questo: toCharArray():

String k = "abcdef"; 
char[] x = k.toCharArray(); 

Il risultato è il seguente array:

[a,b,c,d,e,f] 
1

Basato sul titolo di questo domanda, sono venuto qui volendo convertire una stringa in una serie di sottostringhe divise da delimitatori. Aggiungerò qui la risposta per altri che potrebbero avere la stessa domanda.

Questo rende un array di parole dividendo la corda in ogni spazio:

String str = "string to string array conversion in java"; 
String delimiter = " "; 
String strArray[] = str.split(delimiter); 

Questo crea il seguente array:

// [string, to, string, array, conversion, in, java] 

Source

testato in Java 8

1

qui è convertire una stringa semplice in un array di stringhe usando il metodo split.

String [] stringArray="My Name is ABC".split(" "); 

uscita

stringArray[0]="My"; 
stringArray[1]="Name"; 
stringArray[2]="is"; 
stringArray[3]="ABC"; 
3

È sufficiente utilizzare il metodo .tocharArray() in java

String k = "abc"; 
char alpha = k.tocharArray(); 

Questo dovrebbe funzionare bene in Java 8