如果我有一个包含随机字符的文件,例如:
sdo8kd oko ala la654
"sdo8kd"
,"oko"
,"ala"
和"la654"
将被视为单词。
我该如何特别使用Character.isWhitespace(c)
方法来表示不包含空格字符的单词,其中c是要检查的字符是否为空格。
答案 0 :(得分:2)
您可以使用split(regex)
中的String
并将其放入array
中,然后使用它进行所需的操作。
String sentence = "sdo8kd oko ala la654";
String[] words = sentence.split("\\s+");
for(String word : words){
System.out.println("'" + word + "'"); //'sdo8kd', 'oko', 'ala', 'la654'
}
System.out.println(words.length); //4
答案 1 :(得分:0)
尝试此正则表达式“ [a-zA-Z0-9] +”
boolean isAlphaNumeric = s.matches(“ [a-zA-Z0-9] +”);
a-zA-Z所有拉丁字母(小写和大写)
0-9全部数字
[a-zA-Z0-9] +括弧内至少1个或多个字符。
答案 2 :(得分:0)
如果您希望拆分单词,即使它们之间有任意数量的空格。 您可以使用
"sdo8kd oko ala la654".split(" +");
这将返回String [],其值为“ sdo8kd”,“ oko”,“ ala”和“ la654”
答案 3 :(得分:-1)
尝试此正则表达式。它将基本上用一个空格替换多个空格,并使用trim()删除尾随和前导空格:
word = word.replaceAll("\\s+", " ").trim();
使用Character.isWhitespace()检查每个字符不是很有效,但是如果要这样做,可以使用以下方法将字符串拆分为一个数组:
String [] words = word.split("");
并迭代单词的每个字符,并查看当前迭代元素之前的元素是否为空格。如果没有,则可以将当前字符附加到StringBuilder中。
StringBuilder builder = new StringBuilder();
for(int i = 1; i < words.length; i++){
if(Character.isWhitespace(words[i].charAt(0)) && Character.isWhitespace(words[i-1].charAt(0)){
//DO NOTHING
}else{
builder.append(words[i]);
}
}
word = builder.toString();