- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
所以我正在编写一个函数 parse() 来逐行读取指定的文件,并且我正在利用 String.split(regex) 函数将行拆分为一个字符串数组。此外,每个单词都将传递给一个 HashMap,该 HashMap 包含在另一个作为参数传递给 parse() 的函数中。虽然我浏览了 Stack Overflow 以寻求任何帮助,但我仍然不确定为什么我的函数导致我的程序挂起。
这是函数本身:
public void parse(FrequencyCounter counter) throws IOException {
BufferedReader fileReader = new BufferedReader(new FileReader(file));
String searchExpression = "[\\p{Space}\\p{Punct}]";
String line;
String[] wordList;
line = fileReader.readLine();
while (!line.isEmpty()) {
wordList = line.split(searchExpression);
System.out.println("First value of wordList: " + wordList[0]);
for (String each : wordList) {
if(each.isEmpty())
break;
if(counter.isAnElement(each)) {
counter.incrementKey(each);
} else {
counter.addKey(each);
}
}
}
fileReader.close();
}
所以我可以很好地进入 while 循环,但是当在假设的 wordList 构造之后添加 println() 语句时,程序会无限地打印出一个空的 wordList,并且程序不会从该函数返回。从我的角度来看,我被引导相信我使用的正则表达式没有达到我想要的目的。
为了详细说明我需要什么,正则表达式应该隔离仅由字母字符组成的单词。在完美的情况下,连词或带连字符的词可以被完整地识别并添加到 wordList 中。但是,我可以接受像“won't”和“twenty-two”这样的词变成“won”、“t”、“twenty”和“two”。
作为测试用例,我正在运行一个包含 Lewis Carroll 的诗“Jabberwocky”的纯文本文件,尽管它不包含很难拆分的非单词标记。
是什么导致了这个问题,我该如何改进这个函数完成的解析?
最佳答案
您不会在 while 循环中更改字符串 line
,因此永远不会遇到 !line.isEmpty()
。
关于java - 使用 String.split(regex) 在空格和标点符号处拆分一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15220143/
我想将字符串拆分为列表中的单独句子。 例子: string = "Hey! How are you today? I am fine." 输出应该是: ["Hey!", "How are you to
好吧,这是我第一次发帖,所以如果我有任何错误,请多多包涵。长话短说,我得到了一个字符串数组,我的目标是计算字符串的唯一单词数并从数组中删除所有标点符号。 public static HashMap u
我正在尝试为自然语言解析器返回的词性标签和其他标签创建可区分的联合。 在 C#/Java 中通常使用字符串或枚举来表示它们,但在 F# 中似乎更适合区分联合,因为它们是不同的只读值。 在语言引用中,我
我正在处理 go/golang,尝试编写需要字符串和种子的代码。它应该返回一个打乱的字符串,其中单词中的第一个和最后一个字母、标点符号和数字保持不变。 示例: my name is Nikki. My
这个问题在这里已经有了答案: How can I use "." as the delimiter with String.split() in java [duplicate] (8 个答案) 关
我需要一种方法来使用包含省份缩写、全名和地区的词典,而不必为安大略省的每个可能的拼写错误添加条目。表如下: state |name | territory ============
我需要能够仅使用 C++ 字符串才能更改下面的输入段落。我遇到的问题是,当我在末尾拉出带有标点符号的东西时,例如“programs-”,它会将它作为“programs-”拉入我的数组,而不是分别将“p
我编写了一个函数来删除停用词和标记化,如下所示: def process(text, tokenizer=TweetTokenizer(), stopwords=[]): text =
df <- structure(list(`a a` = 1:3, `a b` = 2:4), .Names = c("a a", "a b" ), row.names = c(NA, -3L), c
我正在尝试使用javascript制作一个回文程序,即使字符串有标点符号和空格,它也会通过TRUE或FALSE显示字符串是否是回文(前女士,我是亚当)。但每次我输入一个字符串时,无论字符串是什么,我都
删除选择性连字符 import pandas as pd s = pd.Series(['do not-remove this-hyphen but remove-all of these-hyphe
在 Web 表单条目中,我们看到使用了奇怪的字符,例如: '(windows 1252 编码) 或 ðŸ'•(表情符号) 或 |(不知道,但认为它是 windows 1252) 对于其中一些,我可以使
从字符串中过滤掉所有 UTF-8 标点字符和符号(如✀✁✂✃✄✅✆✇✈等)的最佳和最有效方法是什么。简单地过滤掉所有不在 a-z、A-Z 和 0-9 中的字符不是一种选择,因为我想保留来自其他语言的字
Ruby 中是否有识别 Unicode 标点符号(例如,",-)的正则表达式? 最佳答案 你可以使用这个: /[[:punct:]]/ 有关更多信息,请查看 Regexp class .您也可以在此
我正在尝试创建一个 LPeg 模式,该模式将匹配 UTF-8 编码输入中的任何 Unicode 标点符号。我想出了以下 Selene Unicode 和 LPeg 的结合: local unicode
我正在编写一个Python代码来从输入文件中提取所有URL,其中包含来自Twitter(推文)的内容或文本。然而,在这样做时,我意识到在 python 列表中提取的几个 URL 在末尾有“特殊字符”或
我写emacs lisp代码如下: #!/usr/bin/emacs --script (setq input (read-minibuffer "please input your name:")
这是我的代码。用户将提供输入(任何字符串)而不是“这是一个测试。1 2 3 4 5”。 然后它将显示空格数、标点符号、数字和字母作为输出字符串。 #include #include using n
我正在尝试比较没有任何标点符号、空格、重音符号等的名称。目前我正在做以下事情: -(NSString*) prepareString:(NSString*)a { //remove any a
我正在使用 Ruby on Rails 3.1.0,我想知道如何在 YAML 文件中正确声明冒号(标点符号)。我试图通过在我的 config/locales/defaults/en.yml 文件 中添
我是一名优秀的程序员,十分优秀!