Как разбить строку перед первой запятой?

У меня есть метод переопределения с String, который возвращает String в формате:

 "abc,cde,def,fgh"

Я хочу разделить содержимое строки на две части:

  1. Строка перед первой запятой и

  2. Строка после первой запятой

Мой основной метод:

@Override
protected void onPostExecute(String addressText) {

    placeTitle.setText(addressText);
}

Теперь, как мне разбить строку на две части, чтобы я мог использовать их для задания текста на две разные TextView?

Ответ 1

Вы можете использовать следующий фрагмент кода

String str ="abc,cde,def,fgh";
String kept = str.substring( 0, str.indexOf(","));
String remainder = str.substring(str.indexOf(",")+1, str.length());

Ответ 2

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`

Если вы хотите только cde как строку после первой запятой. Затем вы можете использовать

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

или без ограничения

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

Не забудьте проверить length, чтобы избежать ArrayIndexOutOfBound.

Ответ 3

Ниже вы найдете следующее:

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

Это даст 2 строковых массива. Split имеет две версии. Что вы можете попробовать, это

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

Ответ 4

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

Ответ 5

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

Для получения дополнительной информации см. документацию .

Ответ 6

Используйте split с регулярным выражением:

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

Ответ 7

От jse1.4String - Два метода split новы. Добавлен метод subSequence, как требуется интерфейсом CharSequence, который теперь реализует String. Добавлены три дополнительных метода: matches, replaceAll и replaceFirst.

Использование Java String.split(String regex, int limit) с Pattern.quote(String s)

Строка "boo: and: foo", например, дает следующие результаты с этими параметрами:

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

У меня есть та же проблема в параметрах URL. Чтобы решить эту проблему, мне нужно разбить на основе первого ?. Таким образом, строка remaing String содержит значения параметров, и их нужно разбить на основе &.

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

Запустите Javascript на JVM с Rhino/Nashorn "С JavaScripts String.prototype.split:

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", ""]

Ответ 8

: В этом случае вы можете использовать replaceAll с некоторым регулярным выражением, чтобы получить этот вход, чтобы вы могли использовать:

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

Если ключ является только Строкой, вы можете использовать (\\D?),.*

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

Ответ 9

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

Я создал эту функцию. Аргументами являются входная строка (StringInp, здесь) и целочисленное значение (int n, здесь), которое представляет собой размер массива, который содержит значения в строке, разделенные запятыми, Вы можете использовать другой специальный символ для извлечения значений из строки, содержащей этот символ. Эта функция будет возвращать массив целых чисел размера n.

Чтобы использовать,

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

Ответ 10

У меня есть эта строка Кто-нибудь может предложить, как я могу получить значение конкретного ключа  "Местоположение": "Широта: 40,377, Долгота: -105.147, Название: SB I-25 North Ditch"