2016-11-01 4 views
0

Я пытаюсь разделить эту строку: "send#hi how are you" вКак разбить строку без учета пробелов?

  1. send
  2. hi how are you

, а затем разделить "hi how are you" в

  1. hi
  2. how
  3. are
  4. you

Моя попытка:

text[0] = "send#hi how are you"; 
String[] one = text[0].split("#"); 
String[] two = text[0].split("#")[1].split("\\s#"); 

При разбиении "send#hi how are you", он только дает мне "отправить" и "привет" ...

Как я могу изменить мой код так работает?

+0

Не '' \\ s + "', а просто '' \\ s "'. –

ответ

0

Вот код, который должен работать, при условии, что вы не хотите слово перед символом фунта:

String x = "send#hi how are you"; 
x = x.substring(x.indexOf("#")+1, x.length()); 
String[] splitUp = x.split(" "); 

Если вы хотите и что раньше, и то, что после того, как фунт:

String x = "send#hi how are you"; 
String before = x.substring(0, x.charAt("#")); 
String after = x.substring(x.charAt("#")+1, x.length()); 
String[] splitUp = after.split(" "); 

А вот еще один способ сделать второй:

String x = "send#hi how are you"; 
String[] pieces = x.split("#"); 
//at this point pieces[0] will be the word before the pound and pieces[1] what is after 
String[] after = pieces[1].split(" "); 

Заключительное примечание - расщепление на " " - это один из способов сделать это, но разделение на "\\s" - это в основном то же самое, что и регулярное выражение, которое может быть более надежным.

0

Ваша проблема заключается в том, что текст раскалывается на (в данном случае "#") является потребляются расколом - т.е. он не сохраняется ни в одном из полученных строк.

Наименьшее редактировать, чтобы вы собираетесь это изменить:

String[] two = text[0].split("#")[1].split("\\s#"); 

к:

String[] two = text[0].split("#")[1].split("\\s"); 
//            ^--- remove the # 
0

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

import java.util.regex.Matcher; 
import java.util.regex.Pattern; 

String str = "send#hi how are you"; 
Pattern p = Pattern.compile("([^#]+)#(.*)"); 
Matcher m = p.matcher(str); 

if (m.find()) { 
    String first = m.group(1); 
    String[] second = m.group(2).split("\\s+"); 

    System.out.println(first); 
    System.out.println(java.util.Arrays.asList(second)); 
} 

или если вы хотите самый простой способ:

String str = "send#hi how are you"; 

String[] parts = str.split("#", 2); 
String first = parts[0]; 
String[] second = parts[1].split("\\s+"); 

System.out.println(first); 
System.out.println(Arrays.asList(second)); 
Смежные вопросы