我的 TextView 的文本是动态更改的。我想用分隔符空格“”标记此文本,并计算接下来发送到另一个 TextView 的标记
这是我的代码
public void onClick(View v) {
// TODO Auto-generated method stub
if (v.getId()==R.id.button5){
Intent i = new Intent(this, Tokenizing.class);
String test = ((TextView)findViewById(R.id.textView6)).getText().toString();
test = test.toLowerCase();
test = test.replaceAll("\\W", " ");
StringBuilder result = new StringBuilder();
StringTokenizer st2 = new StringTokenizer(test);
while (st2.hasMoreTokens()) {
String st3 = st2.nextToken();
System.out.println(st3 + st2.countTokens());
// System.out.println("Count Token" + st2.countTokens());
result.append(st3+'\n');
}
i.putExtra("result", result.toString());
startActivity(i);
//Log.i("Test Klik Next", result);
}
结果
stopwords
are
commonly
occurring
words
标记化过程进展顺利,但我没有得到结果计数标记,我的编码有问题吗?
我想要这样的预期输出
(number of tokens)
stopwords
are
commonly
occurring
words
最佳答案
您可能需要在循环生成的 token 之前在代码中添加一行:
result.append(st2.countTokens() + "\n");
while (st2.hasMoreTokens()) {
您可能需要注释掉 while 循环中的 sops 以避免混淆。
或者,您可以在不迭代使用常规字符串拆分创建的标记的情况下实现此目的:
String test = "This is a test String proving the concept";
StringBuilder result = new StringBuilder();
String[] tokens = test.split("\\s");
result.append(tokens.length + "\n");
for (String str:tokens) {
result.append(str+'\n');
}
System.out.println(result);
输出:
8
This
is
a
test
String
proving
the
concept
关于java - 标记化和计数标记,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21075567/