2015-02-19 2 views
2

Я разбираю имена некоторых папок. У меня есть программа, в которой перечисляются вложенные папки папки и анализируются имена папок.Сплит-строка после появления n количества цифр

Например, одна папка может быть названа что-то вроде этого:

"Folder.Name.1234.Some.Info.Here-ToBeParsed"

и я хотел бы разобрать его поэтому имя будет «Имя папки». В настоящий момент я сначала использую string.replaceAll(), чтобы избавиться от специальных символов, а затем есть эта 4-значная последовательность. Я хотел бы разбить строку на эту точку. Как я могу это достичь?

В настоящее время мой код выглядит примерно так:

// Parsing string if regex p matches folder's name 
if(b) { 
    //System.out.println("Folder: \" " + name + "\" contains special characters."); 
    String result = name.replaceAll("[\\p{P}\\p{S}]", " "); // Getting rid of all punctuations and symbols. 
    //System.out.println("Parsed: " + name + " > " + result); 

    // If string matches regex p2 
    if(b2) { 
     //System.out.println("Folder: \" " + result + "\" contains release year."); 
     String parsed_name[] = result.split("20"); // This is the line i would like to split when 4-digits in row occur. 
     //System.out.println("Parsed: " + result + " > " + parsed_name[0]); 
     movieNames.add(parsed_name[0]); 
    } 

Или, может быть, есть еще более простой способ сделать это? Заранее спасибо!

+1

Вы не пиратский, не так ли? :) –

+2

Никогда. Просто пытаюсь изучить некоторое регулярное выражение. :) – mpak

ответ

1

Вы должны держать его просто так:

String name = "Folder.Name.1234.Some.Info.Here-ToBeParsed"; 
String repl = name.replaceFirst("\\.\\d{4}.*", ""). 
     replaceAll("[\\p{P}\\p{S}&&[^']]+", " "); 
//=> Folder Name 
  • replaceFirst это удалить все после того, как DOT и 4 цифры
  • replaceAll заменяет все знаки препинания и пробел (кроме апострофа) одним пробелом
+0

Спасибо за ответ. Можете ли вы объяснить это регулярное выражение? Кажется, что-то работает, но я хотел бы заменить другие специальные символы, например), (, [,] тоже не только ".". Должно было сделать это более ясным в вопросе .. :) – mpak

+1

Хорошо, это близко достаточно. Благодаря! Еще один вопрос: регулярное выражение теперь прекрасно, но если бы я хотел, чтобы он не разбирал характер: «(апостроф), как это сделать? – mpak

+0

ok проверить мой обновленный ответ еще раз – anubhava

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