题目描述:统计字符串中的单词个数,这里的单词指的是连续的不是空格的字符。
解析:
1.空格分割
①以空格分割字符串,空格可能有多个,因此用正则“\s+”;
②分割后的字符数组可能有空字符,因此需要去除空字符。
public int countSegments1(String s){
if (s == null || s.length() == 0){
return 0;
}
//以正则"\\s+"分割句子得到字符数组
String[] words = s.split("\\s+");
int num = 0;
//字符数组中可能包含空字符,去除空字符
for (int i = 0; i < words.length; i++){
if ("".equals(words[i]))
num++;
System.out.println(words[i]);
}
return words.length-num;
}
2.遍历计数
public int countSegments2(String s){
if (s == null || s.length() == 0){
return 0;
}
int count = 0;
boolean flag = false;
//遍历字符串
for (int i = 0; i < s.length(); i++){
if (s.charAt(i) == ' ')
//如果有字符为空格,则flag为false
flag = false;
else{
//如果字符不为空格,根据flag计数
if (!flag){
count++;
flag = true;
}
}
}
return count;
}