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?


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

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


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);
}

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();

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.


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

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.