2012-05-01 34 views
5

Tôi có một văn bản và tôi muốn đếm các từ trong đó. Có điều gì đó sai khi có các dòng mới trong văn bản.Android - java - đếm từ

Tôi cố gắng này:

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

Đây là một văn bản -> wc: 4

Đây là

một văn bản

-> wc: 4

này là

đơn giản

văn bản -> wc: 4

Bất kỳ ý tưởng nào?

Trả lời

8

Bạn muốn chia nhỏ các chuỗi khoảng trắng tùy ý, thay vì chỉ các ký tự khoảng trắng. Vì vậy, hãy sử dụng .split("\\s+") thay vì .split(" ").

+0

Không tệ! Cảm ơn – erdomester

0

này sẽ làm việc ngay cả với nhiều không gian và không gian hàng đầu và/hoặc dấu và dòng trống:

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

Bạn cũng có thể sử dụng \\ W ở đây thay vì \\ s, nếu bạn có thể có một cái gì đó khác hơn không gian tách từ.

0

Tôi muốn đề xuất sử dụng BreakIterator. Theo kinh nghiệm của tôi, đây là cách tốt nhất để bao gồm các ngôn ngữ không phải là ngôn ngữ chuẩn như tiếng Nhật, nơi không có khoảng trắng tách biệt các từ.

Ví dụ về đếm từ here.