Java разделить строку на третью запятую - PullRequest
2 голосов
/ 27 сентября 2011

У меня есть строка, которую нужно разделить на 2. Я хочу сделать это, разделив ровно на третью запятую.

Как мне это сделать?

Редактировать

Пример строки:

from:09/26/2011,type:all,to:09/26/2011,field1:emp_id,option1:=,text:1234

Строка будет оставаться в том же формате - я хочу, чтобы все перед полем в строке.

Ответы [ 3 ]

4 голосов
/ 27 сентября 2011

Если вы просто заинтересованы в разбиении строки по индексу третьей запятой, я, вероятно, сделаю что-то вроде этого:

String s = "from:09/26/2011,type:all,to:09/26/2011,field1:emp_id,option1:=,text:1234";

int i = s.indexOf(',', 1 + s.indexOf(',', 1 + s.indexOf(',')));

String firstPart = s.substring(0, i);
String secondPart = s.substring(i+1);

System.out.println(firstPart);
System.out.println(secondPart);

Вывод:

from:09/26/2011,type:all,to:09/26/2011
field1:emp_id,option1:=,text:1234

Смежный вопрос:

2 голосов
/ 27 сентября 2011

Наивная реализация

public static String[] split(String s)
{
    int index = 0;
    for(int i = 0; i < 3; i++)
        index = s.indexOf(",", index+1);

    return new String[] {
            s.substring(0, index),
            s.substring(index+1)
    };
}

Это не проверяет границы и будет выдавать всевозможные приятные исключения, если не будет введено, как ожидалось. Дано "ABCD,EFG,HIJK,LMNOP,QRSTU" возвращает ["ABCD,EFG,HIJK","LMNOP,QRSTU"]

1 голос
/ 27 сентября 2011

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

^([^,]*,[^,]*,[^,]*),(.*)$

Результат в двух снимках (1 и 2), не включая третью запятую.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...