191 votes

diviser une chaîne de caractères uniquement à la première instance - java

Je veux diviser une chaîne de caractères par le caractère '='. Mais je veux qu'elle ne soit divisée que sur la première instance. Comment puis-je le faire ? Voici un exemple JavaScript pour le caractère '_' mais il ne fonctionne pas pour moi. divise la chaîne uniquement sur la première instance du caractère spécifié

Exemple :

apple=fruit table price=5

Lorsque j'essaie String.split('=') ; cela donne

[apple],[fruit table price],[5]

Mais j'ai besoin

[apple],[fruit table price=5]

Merci

350voto

Zaheer Ahmed Points 12945
string.split("=", 2);

Como String.split(java.lang.String regex, int limit) explique :

Le tableau renvoyé par cette méthode contient chaque sous-chaîne de cette chaîne qui est terminée par une autre sous-chaîne correspondant à l'expression donnée ou qui est terminée par la fin de la chaîne. Les sous-chaînes dans le tableau sont dans l'ordre dans lequel elles apparaissent dans cette chaîne. Si l'expression ne correspond à aucune partie de l'entrée, le tableau résultant ne comporte qu'un seul élément, à savoir cette chaîne.

El limit contrôle le nombre de fois que le motif est appliqué et affecte donc la longueur du tableau résultant. Si la limite n est supérieure à zéro, alors le motif sera appliqué au maximum n - 1 fois, la longueur du tableau ne sera pas supérieure à n et la dernière entrée du tableau contiendra toutes les entrées au-delà du dernier délimiteur correspondant.

La chaîne boo:and:foo par exemple, donne les résultats suivants avec ces paramètres :

Regex Limit    Result
:     2        { "boo", "and:foo" }
:     5        { "boo", "and", "foo" }
:    -2        { "boo", "and", "foo" }
o     5        { "b", "", ":and:f", "", "" }
o    -2        { "b", "", ":and:f", "", "" }
o     0        { "b", "", ":and:f" }

14voto

codeMan Points 2852

Oui, vous pouvez, il suffit de passer le paramètre entier à la méthode de fractionnement.

String stSplit = "apple=fruit table price=5"

stSplit.split("=", 2);

Voici la référence d'un document java : String#split(java.lang.String, int)

7voto

Siva Points 998

Comme beaucoup d'autres réponses suggèrent l'approche par les limites, Cela peut être une autre manière

Vous pouvez utiliser le indexOf sur une chaîne de caractères qui renvoie la première occurrence du caractère donné. En utilisant cet index, vous pouvez obtenir le résultat souhaité.

String target = "apple=fruit table price=5" ;
int x= target.indexOf("=");
System.out.println(target.substring(x+1));

2voto

Kailash Karki Points 110
String string = "This is test string on web";
String splitData[] = string.split("\\s", 2);

Result ::
splitData[0] =>  This
splitData[1] =>  is test string  

String string = "This is test string on web";
String splitData[] = string.split("\\s", 3);

Result ::
splitData[0] =>  This
splitData[1] =>  is
splitData[1] =>  test string on web

Par défaut, la méthode split crée n nombres de tableaux sur la base d'une expression rationnelle donnée. Mais si vous voulez restreindre le nombre de tableaux à créer après une division, passez le deuxième argument comme un argument entier.

0voto

Bhola Points 177

Ça marche :

public class Split
{
    public static void main(String...args)
    {
        String a = "%abcdef&Ghijk%xyz";
        String b[] = a.split("%", 2);

        System.out.println("Value = "+b[1]);
    }
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X