gpt4 book ai didi

java - 从 TextView 中进行字符串标记

转载 作者:行者123 更新时间:2023-12-01 18:38:05 25 4
gpt4 key购买 nike

我的 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();
String result = null;
StringTokenizer st2 = new StringTokenizer(test," ");
while (st2.hasMoreTokens()) {
String st3 = st2.nextToken();
System.out.println(st3);

result = st3;
}
i.putExtra("result", result);
startActivity(i);
Log.i("Test Klik Next", result);

但我在 TextView 中只有最后一个词。标记化之前的文本:

        Examples of paradoxes can be humorous and confusing

标记化后的文本:

        confusing

我的编码哪里错了?

最佳答案

每次读取新 token 时都会覆盖结果

result = st3;

所以它总是等于最后一个值。将结果类型从 String 更改为 StringBuilder然后边走边构建

 result.append(st3 + " "); //re-adding the space as the StringTokenizer will remove it

然后在StringTokenizer循环之后,使用result.toString()获取构建的String

<小时/>

为什么不结果+= st3

其他一些答案建议您这样做。不这样做的原因是在 Java 中,String 是不可变的。这意味着它们无法更改,因此每当您附加两个 String 对象时,都会创建一个新的 String 对象。因此,循环中的每一步都会创建一个新的 String 对象,这是低效且不必要的。 StringBuilder 不是不可变的,String 可以附加到它,而无需每次创建新对象的开销。

StringTokenizer

值得注意的是,正如 @RGraham 在评论中所说,此类已被弃用。这意味着它不再被普遍使用,不鼓励使用它,并且可能会在某个时候被删除。
More information here .

token - 输入或输出

由于其他答案假设与我相反,并且在对上述答案之一和 meta 进行讨论后,我觉得有必要澄清一下。我不确定您的 Intent 是否是摆脱标记(在本例中为空格“”)并最终得到

Examplesofparadoxescanbehumorousandconfusing

或者在输出最终的String时替换它们并取出您输入的内容。所以我假设您想保留原始含义并替换它们。否则,获得上述结果的更快方法是简单地跳过所有标记化并执行

test.replaceAll(" ","");

关于java - 从 TextView 中进行字符串标记,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20967878/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com