2012-05-01 3 views
5

У меня есть edittext, и я хочу посчитать в нем слова. Что-то не так, когда в редакторе есть новые строки.Android - java - count words

Я попытался это:

String[] WC = et_note.getText().toString().split(" "); 
Log.i("wordcount", "wc: " + WC.length); 

Это текст -> туалет: 4

Это

текст -> туалет: 4

Этот is

простой

текст -> туалет: 4

Любые идеи?

ответ

8

Вы хотите разбить на произвольные строки пробелов, а не просто символы пробела. Итак, используйте .split("\\s+") вместо .split(" ").

+0

Неплохо! благодаря – erdomester

0

Это будет работать даже с несколькими пространствами и ведущими и/или завершающие пробелы и пустые строки:

String words = str.trim(); 
if (words.isEmpty()) 
return 0; 
return words.split("\\s+").length; // separate string around spaces 

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

0

Я предлагаю использовать BreakIterator. Согласно моему опыту, это лучший способ охватить нестандартные языки, такие как японский, где нет пространств, которые отделяют слова.

Пример подсчета слов here.