我有一个方法getNextChar(),它按字符读取字符串。我正在编写一种方法来获取getNextChar()提供的字符序列中的单词。
文字包含标点符号和其他特殊字符。
我想要一个包含所有标点符号和特殊字符的数组,当我读取文本的字符时,检查字符是否在数组中以忽略它。 当它获得空格时,该方法将识别该单词。 单词将存储在Collection (例如:map)中,因为我需要计算频率,同时检查单词是否已在地图中插入并增加这个词的反击。
答案 0 :(得分:1)
我认为有一种更简单的方法可以做到这一点。
无论您的输入源是什么,我都会使用Scanner类阅读它。您可以使用输入字符串实例化此类,并调用Scanner.nextWord()方法以获取字符串中的下一个单词。这会自动检查空格并返回下一个单词。然后,您可以使用String.replace(“标点符号”,“”)来删除标点符号,然后将这些单词插入到ArrayList中,您可以计算频率等。
Scanner reader = new Scanner(string);
String word = reader.nextWord();
word=word.replaceAll(//code);
list.add(word);
答案 1 :(得分:0)
您可以使用string.split()将字符串拆分为由空格分隔的字符串数组(对于您的单词。)您还可以使用Character.isLetterOrDigit()检查每个字符以避免标点符号。 (不一定按顺序。)
答案 2 :(得分:0)
如果使用一组字符,查找标点符号会有更好的表现。
Set<Character> punctationchars ....
if(punctationcahars.contains(yourChar) { ... }
答案 3 :(得分:0)
只需使用Scanner
即可阅读String
s:
Scanner in = new Scanner(...);
while (in.hasNext()) {
String word = in.next();
/* do something with the word, check punctuation, etc. */
}