java - StringTokenizer 标记化问题

标签 java stringtokenizer

String a ="the STRING TOKENIZER CLASS ALLOWS an APPLICATION to BREAK a STRING into TOKENS.  ";

StringTokenizer st = new StringTokenizer(a);
while (st.hasMoreTokens()){
  System.out.println(st.nextToken());

给出上面的代码,输出如下,

the
STRING TOKENIZER CLASS
ALLOWS
an
APPLICATION
to
BREAK
a
STRING
into
TOKENS. 

我唯一的问题是为什么“STRING TOKENIZER CLASS”已合并为一个 token ??????

当我尝试运行此代码时,

System.out.println("STRING TOKENIZER CLASS".contains(" "));

它打印了有趣的结果,

错误

听起来不合逻辑吧?我不知道出了什么问题。

我找到了原因,该空间不知何故未被Java识别为有效空间。但是,我不知道从前端处理到我发布的代码,它是如何变成这样的。

伙计们,我需要强调一下,下面的代码先于上面的代码运行..

if (!suspectedContentCollector.isEmpty()){ 迭代器 i = ShouldestContentCollector.iterator(); 字符串温度=“”; while (i.hasNext()){ temp+=i.next().toLowerCase()+ ""; } StringTokenizer st = new StringTokenizer(temp);

        while (st.hasMoreTokens()){
            temp=st.nextToken();
            temp=StopWordsRemover.remove(temp);
            analyzedSentence = analyzedSentence.replace(temp,temp.toUpperCase());
        }
    }

因此,一旦将其更改为大写,某处似乎出了问题,我意识到只有某些空格未被识别。难道是从文档中检索文本的原因?

以下代码,

String a ="STRING TOKENIZER 类允许应用程序将字符串分解为 token 。 "; for (int i : a.toCharArray()) { System.out.print(i + ""); }

产生以下输出,

116 104 101 32 83 84 82 73 78 71 160 84 79 75 69 78 73 90 69 82 160 67 76 65 83 83 32 65 76 76 79 87 83 32 97 110 32 65 80 80 76 73 67 65 84 73 79 78 32 116 111 32 66 82 69 65 75 32 97 32 83 84 82 73 78 71 32 105 110 116 111 32 84 79 75 69 78 83 46 160 32

最佳答案

那里——答案就在您添加的代码片段中。列出的整数表明单词 STRING 后面的空格是 ASCII 字符 160,即  ,而不是字符 32(普通空格)。编辑原始字符串,将 STRING TOKENIZER CLASS 中的空格替换为实际空格而不是移位空格。

来自 1.4.2 Javadoc 的附注:

StringTokenizer is a legacy class that is retained for compatibility reasons although its use is discouraged in new code. It is recommended that anyone seeking this functionality use the split method of String or the java.util.regex package instead.

关于java - StringTokenizer 标记化问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2494651/

相关文章:

java - MyBatis:尝试从具有原始返回类型的方法返回 null

java - 修复此铸件行为的最简洁方法

java - 在 zip 存档中使用 Unicode 字符作为文件名

java - Spring RestTemplate : URI is not absolute

java - Spring MVC 中的 RedirectView 不起作用

elasticsearch - Elasticsearch-为一个字段指定不同的索引和搜索分析器

java - JAVA 读取文本文件时出现多个分隔符错误

java - 字符串标记器更改分隔符,不显示它

android - 由 CursorLoader 支持的 AutoCompleteTextView