2013-06-11 4 views
-1

Допустим, у меня есть запутанным имя, например XX_10231_11_32-33-23_jsv.docJava разборе файла

Как извлечь только 11 из этого файла?

настоящее время я использую

filename.split("_", 3)[2]; 

извлекает все прошлые 11.

+0

Regex .. '. *? _. *? _ (. *?) _. *' – vidit

+0

@vidit ответ является 'раскол()'. – CPerkins

+0

используйте метод split (String regex) без ограничения. например filename.split ("_") [2]; – nikkatsa

ответ

1

Почему не просто split("_")[2] вместо split("_", 3)[2]?

String filename="XX_10231_11_32-33-23_jsv.doc"; 
System.out.println(filename.split("_")[2]);//output 11 

В любом случае, если вы хотите, чтобы "оптимизировать" split метод и остановить расщепление после 11split("_", 4) затем использовать. Он будет производить четыре элемента массива, который будет содержать

["XX", "10231", "11", "32-33-23_jsv.doc"] 
1

Проблема здесь является выбор 3 для предела. Это означает, что все прошлое второго найденного разделителя будет в третьем знаке. Используйте отрицательный предел, чтобы не было предела количеству токенов в возвращаемом массиве.

filename.split("_", -1) 

Согласно split Javadocs:

Предел параметр контролирует количество раз шаблон применяется и, следовательно, влияет на длину результирующего массива. Если предел n больше нуля, тогда шаблон будет применен к наиболее n - 1 раз, длина массива будет не больше n, а последняя запись массива будет содержать все входные данные за последним сопоставленным разделителем . Если n равно неположительным, то шаблон будет применяться как как можно больше раз, и массив может иметь любую длину. Если n равно нулю , тогда шаблон будет применяться столько раз, сколько возможно, массив может иметь любую длину, а конечные пустые строки будут отброшены.

(курсив мой)

+0

Или просто вызовите' split() 'без параметра предела:' split ("_") ' – iamnotmaynard

+0

@iamnotmaynard Да, это было бы проще. Но я также хотел указать, что делает параметр 'limit'. – rgettman

+1

Это хорошо, так как это объясняет результаты ОП. – iamnotmaynard

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