Android Split string

227

J'ai une chaîne appelée CurrentStringet est sous la forme de quelque chose comme ça "Fruit: they taste good".
Je voudrais diviser l' CurrentStringutilisation de :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()2 différents TextViewspour afficher cette chaîne.

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

zaid
la source
Vous pourriez probablement essayer de lire des expressions régulières. Ils fonctionnent bien aussi.
Shouvik
10
@Falmarri - Toute question unique sur la programmation est la bienvenue sur Stack Overflow.
Tim Post

Réponses:

606
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 souhaiterez peut-être supprimer l'espace de la deuxième chaîne:

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

Si vous voulez diviser la chaîne avec un caractère spécial comme le point (.), Vous devez utiliser le caractère d'échappement \ avant le point

Exemple:

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

Il existe d'autres façons de procéder. Par exemple, vous pouvez utiliser la StringTokenizerclasse (from 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
Cristian
la source
Merci pour cela! Également utile pour séparer l'heure et la minute lors de la création d'un nouvel objet Time.
travaillé le
24
Merci! La méthode .split () ne fonctionne pas du tout dans Android! StringTokenizer fonctionne correctement.
Ayush Pateria
Oui, oui ... quels problèmes avez-vous rencontrés?
Cristian
split dans android reçoit une expression régulière au lieu d'un simple séparateur de chaînes.
htafoya
1
@HardikParmar utilise etPhoneNo.getText().toString().replaceAll("\\D", "");son dit que remplacer tout ce qui n'est pas numérique
MilapTank
86

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

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

De plus, cela vient de: Android split ne fonctionne pas correctement

Silas Greenback
la source
52

Android split string par une virgule

String data = "1,Diego Maradona,Footballer,Argentina";
String[] items = data.split(",");
for (String item : items)
{
    System.out.println("item = " + item);
}
mahasam
la source
25
     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();
Faakhir
la source
22

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

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

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

Je trouve que c'est un comportement plus naturel. En substance, TextUtils.split () n'est qu'un mince wrapper pour String.split (), traitant spécifiquement du cas de chaîne vide. Le code de la méthode est en fait assez simple.

gardarh
la source
Quel est l'avantage d'utiliser TextUtils.split () au lieu d'appeler simplement split () directement sur la chaîne?
nibarius
Réponse modifiée pour clarifier la différence entre TextUtils.split () et String.split ()
gardarh
Merci, j'ai lu la documentation de TextUtils.split () mais pour une raison quelconque, j'ai raté ce détail. Je suppose que j'étais trop fatigué pour comprendre ce que cela disait réellement.
nibarius
0

String s = "String ="

String [] str = s.split ("="); // maintenant str [0] est "bonjour" et str [1] est "bonjour, 2,1"

ajoutez cette chaîne


la source