如何清空一个字符串?

8
在我正在开发的程序中,某个文本框需要在某个时刻显示一些文本。
output.setText( outputString );
outputString = "";

输出框是一个JTextField。这些代码在一个方法中,第一次调用时运行得很好。然而,当它再次调用时,原始的outputString文本仍然存在。为什么会发生这种情况,我该怎么解决?

好的,我认为这是因为字符串是不可变的。问题在于,outputString从未更改过,因此它仍具有初始方法调用的文本。

我该如何改变字符串中的文本?


好的,伙计们,我刚刚尝试了那个给我的答案5次。它不起作用。我在output.setText(outputString)之前立即放置了output.setText(“”);,但是outputString没有改变,因此它仍然包含早期文本块。 - kullalok
“immediately before output.setText(outputString)”。当然这并不会清除文本,你只是在覆盖它。如果你想要清除文本,你必须在之后调用setText("")。 - Chris Dargis
2
嗯...如果你执行output.setText(""),然后紧接着执行output.setText(outputString),那么你的文本框将包含outputString所包含的内容。你的TextField将为空,但会立即被第二个调用覆盖。如果你想让TextField为空,只需调用output.setText("")。 - John Snow
10个回答

5

将文本设置为变量的内容并不会在该变量和文本字段之间建立永久关系,如果您想清除文本,则可以使用

output.setText("");

4

2

我认为你误解了一些非常重要的事情。Java字符串是不可变的,这意味着你无法改变它们。

"我如何改变字符串中的文本?"

你不可以。字符串中的文本不能被改变。它是不可变的。任何涉及更改字符串中文本的“解决方案”在Java中都行不通。(明白了吗?)

当你这样做:

output.setText(outputString);
outputString = "";

这个操作不会改变文本框中显示的值。它只是改变了本地变量outputString所指向的字符串。

当你执行以下操作时:

output.setText(""); 
output.setText(outputString);

它不会导致outputString改变。它只是将显示的文本更改为无,然后立即将其更改为outputString当前引用的任何内容。

如果您想将文本字段中显示的值更改为无,您只需要这样做:

output.setText("");

也许你在思考中犯了另外一个错误,即认为这个东西是这样的:
output.setText(outputString);

建立文本框output和变量outputString之间的关系...使得当用户在文本框中输入时,outputString变量会神奇地更新。但实际上并非如此。事实上,这是不可能的,因为你无法传递变量的地址。

实际上,output.setText(outputString);只是将outputString传递给文本框对象。如果用户在文本框中键入了任何东西,则字符将存储在其他地方,并且只有在您的代码调用output.getText()时,才会作为新字符串返回到您的代码中。


1
output.setText("");

会解决这个问题


1
为什么会发生这种情况?
字符串是不可变的。因此,当您调用outputString = "";时,会创建一个新的字符串引用。
如何解决?
调用output.setText("");

1

你的代码首先将文本字段的内容设置为output.setText(outputString);中的outputString变量的内容。

你接下来的代码行没有改变String对象,也就是你的文本字段的内容,而是将你的outputString变量设置为引用空字符串变量。在Java中,由于字符串是不可变的,因此不可能对一个字符串变量进行更改并反映到另一个变量上。

正如许多人所说,你需要通过调用jTextFieldVar.setText("");jTextFieldVar.setText(null);来设置你的文本字段内容。


0
你在尝试设置JTextField的文本后将outputstring设置为空吗?如果是这样,你应该尝试像这样做:
  output.setText("");

0

我认为你正在寻找的是:

 output.setText("");

0

这将完美地运作。

output.setString("");


0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接