【发布时间】:2013-09-01 09:37:33
【问题描述】:
我想使用 StreamTokenizer 从 java 文件中提取名称。我已将空格设置为逗号
inputTokenizer.whitespaceChars(',', ',');
但是,当我解析输入文件中的名称(名字与姓氏之间有空格)时,标记器将名字视为一个标记,将姓氏视为另一个标记。我希望它们都被视为同一个令牌,我该怎么做?
例如,“Billy Jean”被视为两个单独的令牌(Billy - token1 Jean - token2),我希望它被视为一个。
谢谢
【问题讨论】:
-
为什么不能使用
split?inputLine.split(",") -
所以你的意思是:使用扫描仪阅读整行。然后拆分行,然后解析行以提取我需要的任何数字/字符串?而不是使用streamtokenizer。如何解析该行以确保输入是一个单词?有 String.parseWord 之类的方法吗?
-
这就是我要说的,但是你说的一个词是什么意思?如果你想将字符串分成一个标记数组,
String.split(delimiter)方法可以做到这一点。 -
streamtokenizer 可以以某种方式确定标记是否为单词,我不知道它是如何做到的。我想知道扫描仪是否有类似的功能。
-
首先,
split","上的输入行。然后,获取结果数组的第一个元素并调用array[0].replaceAll("\\w+\\s+\\w+",""),然后确保该方法的返回值的长度为 0。如果是,则解析该行的其余部分。您也可以split第一个split的输出,这次使用空间,并对数组的每个元素执行replaceAll("\\w+",""),确保每个元素的结果等于0。
标签: java whitespace tokenize java-io removing-whitespace