0

在有人输入一个文本文件后,我必须让它读取用户输入的文本文件。

使用 switch 语句,如何确保第一个单词和最后一个单词没有特定字符?

第一个单词不应有单引号、双引号、美元符号或句点。

最后一个单词不应有单引号、双引号、分号、冒号、句号、逗号、连字符、感叹号或问号将其删除。

我正在使用 hasNext,以便将每个单词打印在一行上。

4

2 回答 2

0

好吧,您可以使用Character类方法轻松地做到这一点isLetterOrDigit(char ch)

于 2012-10-16T14:53:08.833 回答
0

读入第一个单词后,您可以调用此函数(将第一个单词作为参数传递),如果该单词包含任何非法字符,它将返回 true。然后,您可以轻松地创建另一个来测试您的最后一句话。

public boolean containsIllegalChar(String testWord){
boolean containsIllegalChar = false;

for(int count=0; count < testWord.length(); count++){
     char testChar = testWord.charAt(count);
     switch (testChar)
     {
     case ''': containsIllegalChar = true;
     break;
     case '"': containsIllegalChar = true;
     break;
     case '$': containsIllegalChar = true;
     break;
     case ' ': containsIllegalChar = true;
     break;
     default: break;
     }
}
return containsIllegalChar;
}

要测试最后一个单词,您可以使用此结构

String lastWord = "";
while((holder = reader.read()) != -1){  
     lastWord = holder;
     //YOUR PROCESSING
}
boolean testLastWord = containsIllegalCharLastWord(lastWord);

if(testLastWord){
//Contains illegal char
}
else{
//Does not contain
}

您还可以通过针对一个不错的正则表达式测试您的字符串来替换 containsIllegalChar 函数。例如

boolean validWord = ("piz'za".matches("[^'\"$ ]+")) ? true : false;
System.out.println(validWord);

结果:

错误的

希望这可以帮助。菲尔

于 2012-10-16T14:54:05.247 回答