2014-02-12 3 views
0

У меня есть строка, передаваемая в функцию. Строка выглядит так: "[teststring]"Java split method using Regex

Есть случаи, когда между ними может быть несколько строк, разделенных разделителем.

Как использовать метод разделения java для извлечения первой строки, исключая скобки и разделители, может быть запятой и/или точкой с запятой?

Это не работает:

string args = "[teststring, nogood; dontUse]"; 
string temp = args.split("[,;]")[0]; 

Конечный результат должен быть только: teststring.

+3

Прежде чем спрашивать 'Будет ли это work', попробуйте. –

+0

Почти там просто помните о скобке. Удачи. –

+0

Одна из проблем заключается в том, что у вас есть ':' в регулярном выражении, а не ';'. – forgivenson

ответ

2

Ваш текущий подход будет разделен на , и ; и захватить первый элемент, так что в этом случае вы получите все до запятой и результат будет "[teststring". Чтобы просто получить "teststring", вам также захочется разбить квадратные скобки, а затем захватить второй элемент вместо первого (так как первый элемент теперь будет пустой строкой перед [). Например:

String args = "[teststring, nogood; dontUse]"; 
String temp = args.split("[\\[\\],;]")[1]; 
+0

Это сработало. Спасибо – RXC

1

Вместо split вы можете создать шаблон, который будет найти подстроку, которая сразу после [ и содержит только символы, которые не являются разделителями. Вот пример

String data = "[teststring, nogood; dontUse]"; 
Pattern p = Pattern.compile("\\[([^,;]+)"); 
Matcher m = p.matcher(data); 
if (m.find()) 
    System.out.println(m.group(1)); 

Выход:

teststring 
-1

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

var str = "[teststring, nogood; dontUse]"; 
var res = /(\w+)/.exec(str); 
console.log(res[1]); 
+0

Это вопрос Java. .. – Doorknob