web-dev-qa-db-fra.com

Comment diviser String avant la première virgule?

J'ai une méthode de substitution avec String qui renvoie String au format suivant:

 "abc,cde,def,fgh"

Je veux diviser le contenu de la chaîne en deux parties: 

  1. Chaîne avant la première virgule et

  2. Chaîne après la première virgule 

Ma méthode dominante est:

@Override
protected void onPostExecute(String addressText) {

    placeTitle.setText(addressText);
}

Maintenant, comment diviser la chaîne en deux parties, de sorte que je puisse les utiliser pour définir le texte dans deux TextView différents?

8
Santosh Bhandary

Vous pouvez utiliser l'extrait de code suivant - 

String str ="abc,cde,def,fgh";
String kept = str.substring( 0, str.indexOf(","));
String remainder = str.substring(str.indexOf(",")+1, str.length);             
19
Razib
String splitted[] =s.split(",",2); // will be matched 1 times. 

splitted[0]  //before the first comma. `abc`
splitted[1]  //the whole String after the first comma. `cde,def,fgh`

Si vous voulez seulement cde comme chaîne après la première virgule ..__, alors vous pouvez utiliser 

String splitted[] =s.split(",",3); // will be matched  2 times

ou sans limite 

String splitted[] =s.split(",");

N'oubliez pas de cocher la length pour éviter ArrayIndexOutOfBound.

6
Saif
 String s =" abc,cde,def,fgh";
 System.out.println("subString1="+ s.substring(0, s.indexOf(",")));
 System.out.println("subString2="+ s.substring(s.indexOf(",") + 1, s.length()));
2
Arjit

Le ci-dessous est ce que vous recherchez:

public String[] split(",", 2)

Cela donnera 2 tableau de chaîne. Split a deux versions. Ce que tu peux essayer c'est 

String str = "abc,def,ghi,jkl";
String [] twoStringArray= str.split(",", 2); //the main line
System.out.println("String befor comma = "+twoStringArray[0]);//abc
System.out.println("String after comma = "+twoStringArray[1]);//def,ghi,jkl
2
Viraj Nalawade
// Note the use of limit to prevent it from splitting into more than 2 parts
String [] parts = s.split(",", 2);

// ...setText(parts[0]);
// ...setText(parts[1]);

Pour plus d'informations, reportez-vous à cette documentation .

1
almightyGOSU

Utilisez split avec regex:

String splitted[] = addressText.split(",",2);
System.out.println(splitted[0]);
System.out.println(splitted[1]);
1
Rajesh

De jse1.4String - Deux méthodes split sont nouvelles. La méthode subSequence a été ajoutée, comme requis par l'interface CharSequence que String implémente maintenant. Trois méthodes supplémentaires ont été ajoutées: matches, replaceAll et replaceFirst.

Utilisation de Java String.split(String regex, int limit) avec Pattern.quote(String s)

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" }
String str = "abc?def,ghi?jkl,mno,pqr?stu,vwx?yz";
String quotedText = Pattern.quote( "?" );
// ? - \\? we have to escape sequence of some characters, to avoid use Pattern.quote( "?" );
String[] split = str.split(quotedText, 2); // ["abc", "def,ghi?jkl,mno,pqr?stu,vwx?yz"]
for (String string : split) {
    System.out.println( string );
}

J'ai le même problème en ce qui concerne les paramètres d'URL. Pour le résoudre, j'ai besoin de scinder en fonction du premier ?. Ainsi, la chaîne restante contient les valeurs des paramètres et doit être divisée en fonction de &.

String paramUrl = "https://www.google.co.in/search?q=encode+url&oq=encode+url";

String subURL = URLEncoder.encode( paramUrl, "UTF-8");
String myMainUrl = "http://example.com/index.html?url=" + subURL +"&name=chrome&version=56";

System.out.println("Main URL : "+ myMainUrl );

String decodeMainURL = URLDecoder.decode(myMainUrl, "UTF-8");
System.out.println("Main URL : "+ decodeMainURL );

String[] split = decodeMainURL.split(Pattern.quote( "?" ), 2);

String[] Parameters = split[1].split("&");
for (String param : Parameters) {
    System.out.println( param );
}

Exécuter Javascript sur la machine virtuelle avec Rhino/Nashorn «With JavaScript’s String.prototype.split function:

var str = "abc?def,ghi?jkl,mno,pqr?stu,vwx?yz";
var parts = str.split(',');
console.log( parts ); // (5) ["abc?def", "ghi?jkl", "mno", "pqr?stu", "vwx?yz"]
console.log( str.split('?') ); // (5) ["abc", "def,ghi", "jkl,mno,pqr", "stu,vwx", "yz"]

var twoparts = str.split(/,(.+)/);
console.log( parts ); // (3) ["abc?def", "ghi?jkl,mno,pqr?stu,vwx?yz", ""]
console.log( str.split(/\?(.+)/) ); // (3) ["abc", "def,ghi?jkl,mno,pqr?stu,vwx?yz", ""]
0
Yash

: Dans ce cas, vous pouvez utiliser replaceAll avec des regex pour obtenir cette entrée et utiliser:

 System.out.println("test another :::"+test.replaceAll("(\\.*?),.*", "$1"));

Si la clé est juste un String, vous pouvez utiliser (\\D?),.*

System.out.println("test ::::"+test.replaceAll("(\\D?),.*", "$1"));
0
Raju
public static int[] **stringToInt**(String inp,int n)
{
**int a[]=new int[n];**
int i=0;
for(i=0;i<n;i++)
{
    if(inp.indexOf(",")==-1)
    {
        a[i]=Integer.parseInt(inp);
        break;
    }
    else
    {
        a[i]=Integer.parseInt(inp.substring(0, inp.indexOf(",")));
        inp=inp.substring(inp.indexOf(",")+1,inp.length());
    }
}
return a;
}

J'ai créé cette fonction. Les arguments sont chaîne d'entrée (Chaîne inp, ici) et valeur entière (int n, ici) , qui est la taille d'un tableau contenant les valeurs en chaîne séparées par des virgules. Vous pouvez utiliser un autre caractère spécial pour extraire des valeurs d'une chaîne contenant ce caractère. Cette fonction renverra un tableau d'entier de taille n.

Utiliser ,

String inp1="444,55";
int values[]=stringToInt(inp1,2);
0
Brijesh Lakkad