所以我的代码应该返回单词的数量(单词是字母的长度)并且它的作用除了当我输入任何0或更少的东西时,某些pplease可以帮助发现错误吗?
编辑代码:
public class WordCount {
public static int countWords(String original, int minLength){
String[] s1 = original.split("\\s+");
for(int i = 0; i < s1.length; i++){
s1[i] = s1[i].replaceAll("^\\W]", "");
}
int count = 0;
for(int i = 0; i < s1.length; i++){
String str = s1[i];
int len = 0;
for(int x = 0; x < str.length(); x++){
char c = str.charAt(x);
if(Character.isLetter(c) == true){
len ++;
}
}
if(len >= minLength){
count ++;
}
}
return count;
}
public static void main(String[] args){
System.out.println("enter string: ");
String s = IO.readString();
System.out.println("min length: ");
int m = IO.readInt();
System.out.println(countWords(s, m));
}
}
答案 0 :(得分:1)
试试这个:
String s = original.replaceAll("[\\W]", " ").replaceAll("[\\s]+", " ");
因为你必须在这里替换超过1的空格。
答案 1 :(得分:1)
我会应用一个使用regular expression处理文本的解决方案。
我准备了一个代码草图,可以总结如下:
String[] words = myString.replaceAll("[^a-zA-Z ]", " ").split("\\s+");
此代码的作用是:
结果数组words
包含原始字符串中包含的所有单词(即字母序列)。
可以找到完整的示例here。在这个例子中,我只是将单词打印为列表。如果你只想要单词的数量,你只需要返回数组中元素的数量。