How to split String before first comma?

旧巷老猫 提交于 2019-11-30 13:00:15
Razib

You may use the following code snippet

String str ="abc,cde,def,fgh";
String kept = str.substring( 0, str.indexOf(","));
String remainder = str.substring(str.indexOf(",")+1, str.length());
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`

If you want only cde as the string after first comma. Then you can use

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

or without the limit

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

Don't forget to check the length to avoid ArrayIndexOutOfBound.

The below is what you are searching for:

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

This will give 2 string array. Split has two versions. What you can try is

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

For more information, refer to this documentation.

Use split with regex:

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

:In this case you can use replaceAll with some regex to get this input so you can use :

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

If the key is just an String you can use (\\D?),.*

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

From jse1.4String - Two split methods are new. The subSequence method has been added, as required by the CharSequence interface that String now implements. Three additional methods have been added: matches, replaceAll, and replaceFirst.

Using Java String.split(String regex, int limit) with Pattern.quote(String s)

The string "boo:and:foo", for example, yields the following results with these parameters:

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

I have face the same problem in URL parameters, To resoleve it i need to split based on first ? So that the remaing String contains parameter values and they need to be split based on &.

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

Run Javascript on the JVM with 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", ""]
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;
}

I created this function. Arguments are input string (String inp, here) and integer value(int n, here), which is the size of an array which contains values in string separated by commas. You can use other special character to extract values from string containing that character. This function will return array of integer of size n.

To use,

String inp1="444,55";
int values[]=stringToInt(inp1,2);
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!