2016-04-13 5 views
1

У меня есть строки, например: "My brother, John, is a handsome man."Java Строка массива Расщепление

Я хотел бы разделить это массив таким образом, что выход:

"My" , "brother", "," , "John", "," , "is", "a", "handsome", "man", "." 

Может кто-нибудь помочь мне с этим? Мне нужно сделать это на Java.

+0

Вы можете начать с yourString.split (»«); Затем вам понадобится регулярное выражение, чтобы отделить знаки препинания от слов. Это должно дать вам отправную точку, посмотреть, что вы можете узнать для себя. – Draken

+0

У вас есть хорошая куча ответов. Если вы хотите больше, посмотрите здесь http://stackoverflow.com/questions/2206378/how-to-split-a-string-but-also-keep-the-delimiters – RubioRic

ответ

5

Комбинация replaceAll() и split() должна это сделать.

public static void main(String[] args) { 
    String s ="My brother, John, is a handsome man."; 
    s = s.replaceAll("(\\w+)([^\\s\\w]+)", "$1 $2"); // replace "word"+"punctuation" with "word" + <space> + "punctuation" 
    String[] arr = s.split("\\s+"); // split based on one or more spaces. 
    for (String str : arr) 
     System.out.println(str); 
} 

O/P:

My 
brother 
, 
John 
, 
is 
a 
handsome 
man 
. 
+0

Могу ли я проверить, что делает «$ 1 $ 2», имею в виду? – Nana

+1

@Nana - это значения * захваченных групп *. '(\\ w +) ([^ \\ s \\ w] +)' -> имеет 2 группы. '$ 1' является первым,' $ 2' является вторым. – TheLostMind

0

Если вы рассматриваете только , и . то подход будет использовать replace() и split()

String x = "My brother, John, is a handsome man."; 
String[] s = x.replace(",", " ,").replace(".", " .").split("\\s+"); 

for (String str : s) 
    System.out.print("\"" + str + "\"" + " "); 

Выход:

"My" "brother" "," "John" "," "is" "a" "handsome" "man" "." 
0

Попробуйте это.

String string = "My brother, John, is a handsome man."; 
    for (String s : string.split("\\s+|(?=[.,])")) 
     System.out.println(s); 

результат

My 
brother 
, 
John 
, 
is 
a 
handsome 
man 
. 
Смежные вопросы