2010-09-17 9 views
164

J'ai une chaîne appelée CurrentString et est sous la forme de quelque chose comme ceci "Fruit: they taste good".
Je voudrais diviser le CurrentString en utilisant le : comme délimiteur.
Ainsi, le mot "Fruit" sera divisé en sa propre chaîne et "they taste good" sera une autre chaîne.
Et puis je voudrais simplement utiliser SetText() de 2 TextViews différents pour afficher cette chaîne.Android Split chaîne

Quelle serait la meilleure façon d'aborder cela?

+5

Vous ne pouvez pas utiliser simplement la méthode split() de la classe String? http://download.oracle.com/javase/1.4.2/docs/api/java/lang/String.html#split(java.lang.String) – Alex

+0

Vous pourriez probablement essayer de lire dans des expressions régulières. Ils fonctionnent bien aussi. – Shouvik

+10

@Falmarri - Toute question sur la programmation est la bienvenue sur Stack Overflow. –

Répondre

474
String CurrentString = "Fruit: they taste good"; 
String[] separated = CurrentString.split(":"); 
separated[0]; // this will contain "Fruit" 
separated[1]; // this will contain " they taste good" 

Vous pouvez supprimer l'espace à la deuxième chaîne:

separated[1] = separated[1].trim(); 

Il existe d'autres façons de le faire. Par exemple, vous pouvez utiliser la classe StringTokenizer (de java.util):

StringTokenizer tokens = new StringTokenizer(CurrentString, ":"); 
String first = tokens.nextToken();// this will contain "Fruit" 
String second = tokens.nextToken();// this will contain " they taste good" 
// in the case above I assumed the string has always that syntax (foo: bar) 
// but you may want to check if there are tokens or not using the hasMoreTokens method 
+1

Merci pour la réponse formidable. J'ai utilisé le StringTokenizer et cela a parfaitement fonctionné. – zaid

+0

Merci pour ça! Aussi utile pour séparer l'heure et la minute lors de la création d'un nouvel objet Time. – worked

+22

Merci! La méthode .split() ne fonctionne pas du tout sous Android! StringTokenizer fonctionne bien. –

66

méthode .split fonctionnera, mais il utilise des expressions régulières. Dans cet exemple, il serait (à voler de Cristian):

String[] separated = CurrentString.split("\\:"); 
separated[0]; // this will contain "Fruit" 
separated[1]; // this will contain " they taste good" 

De plus, cela vient: Android split not working correctly

37

chaîne android split par une virgule

String data = "1,Diego Maradona,Footballer,Argentina"; 
String[] items = data.split(","); 
for (String item : items) 
{ 
    System.out.println("item = " + item); 
} 
19

Vous pouvez également envisager la méthode Android spécifique TextUtils.split().

La différence entre TextUtils.split() et String.split() est documentée avec TextUtils.split():

String.split() retourne [ ''] quand la chaîne à répartir est vide. Cela renvoie []. Cela ne supprime aucune chaîne vide du résultat.

Je trouve ceci un comportement plus naturel. En substance, TextUtils.split() est juste une enveloppe fine pour String.split(), traitant spécifiquement de la casse de la chaîne vide. The code for the method est en fait assez simple.

+0

Quel est l'avantage d'utiliser TextUtils.split() au lieu de simplement appeler split() directement sur la chaîne? – nibarius

+0

Réponse éditée pour clarifier la différence entre TextUtils.split() et String.split() – gardarh

+0

Merci, j'ai effectivement lu la documentation de TextUtils.split() mais pour une raison quelconque j'ai manqué ce détail. Je suppose que j'étais fatigué de comprendre ce qu'il disait réellement. – nibarius

21
 String s = "having Community Portal|Help Desk|Local Embassy|Reference Desk|Site News"; 
    StringTokenizer st = new StringTokenizer(s, "|"); 
     String community = st.nextToken(); 
     String helpDesk = st.nextToken(); 
     String localEmbassy = st.nextToken(); 
     String referenceDesk = st.nextToken(); 
     String siteNews = st.nextToken();