/ / Java String.split с „[^ a-zA-Z0-9] +“ все още показва бялото пространство като дума - java, regex, string, обърнат индекс

Java String.split с "[^ a-zA-Z0-9] +" все още показва празно пространство като дума - java, regex, string, inverted-index

Имам проблем с програма, която създава честотна карта на дума за даден документ в Java. Когато отпечатвам всички думи, аз все още виждам "" като "дума".

Ето и перифразирания код:

String delimiters = "[^a-zA-Z0-9]+";
String[] words;
SortedSet<String> allWords = new TreeSet<String>();
Map<String, Map<String, Integer>> wordMap = new HashMap<String, Map<String, Integer>>();

while ((line = bufferedReader.readLine()) != null) {
words = line.split(delimiters);
for all words add the word to the allWords set and the wordMap
}

for (String word : allWords) {
System.out.println(word + " : " + wordMap.get(word).entrySet());
}

Ето някои примерни резултати:

Time elapsed: 0.75 seconds.
: [books/dickens.txt=7]       // WHAT ARE YOU?!?! How does this happen??!?!
10 : [books/dickens.txt=2]
11th : [books/dickens.txt=2]
12th : [books/dickens.txt=2]

Как се показва това бяло пространство? Благодаря

ps, ако искате да видите пълния код тук връзка

Отговори:

5 за отговор № 1

Това не е бяло пространство, а празен низ. Това се случва, когато имате празни редове във файла.

правиш нещо подобно

words = "".split(delimiters);

води до масив с един елемент и този елемент е празен низ.