gpt4 book ai didi

Java:检查字符串是否包含多个字符

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

我想用逗号检查我输入的字符串,这非常简单(只需使用这个: How can I check if a single character appears in a string? )。现在我想检查一个角色是否出现多次。 (在本例中为逗号 (/u002C))我创建了以下代码:

public static void addTextLimiterDouble(final TextField tf, final int maxLength, final Button submitButton) {
tf.textProperty().addListener(new ChangeListener<String>() {
@Override
public void changed(final ObservableValue<? extends String> ov, final String oldValue, final String newValue) {

if (oldValue.contains("\u002C") && newValue.endsWith("\u002C")) {
tf.setText(oldValue);
}
}
});

这会产生 StackOverflow 错误,因为它似乎无法跳出循环。谁能解释一下为什么不能?

注意:我知道可能有更多方法来检查多个字符,但我只是好奇为什么这会给我一个错误。

非常感谢任何帮助!

最佳答案

想象一下您正在编辑以逗号结尾的字符串的情况(实际上,这很可能就是您所处的情况)。当您更改该字符串中的其他内容时,您的 if 语句 (if (oldValue.contains("\u002C") && newValue.endsWith("\u002C")) ) 返回 true 并且您尝试通过调用 tf.setText()

恢复为旧值

但是——这改变了文本!并且您的 ChangeListener 被再次调用。新值以逗号结尾(您要恢复为以逗号结尾的值),而旧值也包含逗号,因此您的监听器再次调用 tf.setText()

之后,它会调用您的 ChangeListener 因为文本已更改。再次...令人作呕

关于Java:检查字符串是否包含多个字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26673829/

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