2015-02-15 3 views
0

Я пытаюсь разбить строку с помощью регулярных выражений, до сих пор у меня естьРегулярное выражение для разбиения строки

String[] words = a.replaceAll("[^a-zA-Z ]","").toLowerCase().split("\\s+"); 

И это почти то, что я хочу, но мне нужно, чтобы разделить текст также, когда есть символ новой строки в строке (кстати - я должен фактически использовать символ новой строки или возврата Какова реальная разница?)

Чтобы уточнить, мой вклад:

this is a, 
sample of 
a file. 

После расщепления и делает процедуру что сортирует слова и подсчитывает вхождения каждого, я должен получать это:

a: 2 
file: 1 
is: 1 
of: 1 
sample: 1 
this: 1 

Вместо этого, я получаю:

asample: 1 
file: 1 
is: 1 
ofa: 1 
this: 1 

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

ответ

1

Вы должны изменить свой replaceAll так:

a.replaceAll("[^a-zA-Z]+"," ") 

или как предложил Александр, почему не найти непосредственно слова (то есть более прямо в точку)

0

Просто вставьте пробел ваш второй аргумент метода replaceAll и который должен работать

replaceAll("[^a-zA-Z ]"," ") 

Или вы можете сделать его более эффективным и избегайте ненужных пробелов в строке, возвращаемой методом replaceAll, используя квант '+', как это было предложено Casimir.

Оба будут работать в вашем случае как можно точнее

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