强制用户只添加希伯来字母

Force the user to add only Hebrew letters

如何使 JTextfield 只接受带有 if 语句的希伯来字母? 我可以用所有希伯来字母做一个很长的 if 语句,但它看起来不太好。
我发现希伯来语第一个字母的 Unicode 是 \u05D0 最后一个是 \u05EA.
我怎么能说如果 gettext 在这两个字母之间所以显示(意思是检查输入的文本是否只是一个希伯来字母),用户将在每个文本字段中只添加一个字母。
提前谢谢你

由于您使用的是 JTextField 并且此 class 继承了 getText() 方法,其中 returns 是 String。所以,这就是我可能会做的。

String name = jTextField.getText();
char[] charArray = name.toCharArray();
for (char c : charArray) {
    if (!(c <= 0x05ea && c >= 0x05d0)) {
        break;
        //valid
    }
}

这会变得更有效率,如果你保留元素的计数器 added/removed,你只需要检查最新输入的字符(如果删除你可能不需要那个,但那个场景会需要更多的编码,所以我希望你在解决这个问题后能解决这个问题。

更新:

这是我试过的:

        String name      = "אבגa";
        char[] charArray = name.toCharArray();
        for (char c : charArray) {
            if (c <= 0x05ea && c >= 0x05d0) {
                System.out.println("Valid hebrew");
            }
        }

这会打印 3 次 Valid hebrew

使用您的验证逻辑构建一个输入验证器,并将其附加到您的文本字段以在您输入时验证输入。步骤:将@peter-lawray 给出的验证逻辑与构建 input verifier 的机制相结合,你就可以开始了。

您可以使用 Stream 来使用简单的单行代码

boolean valid = jTextField.getText().chars().allMatch(p -> p <= 0x05ea && p >= 0x05d0);

将其他答案放在一起,这是您可以使用的输入验证器:

// adapted from mohsenmadi/Daniel Rikowski
public class HebrewVerifier extends InputVerifier {
    @Override
    public boolean verify(JComponent input) {
        String text = ((JTextField) input).getText();
        // method suggested by Mad Matts
        return text.chars().allMatch(p -> p <= 0x05ea && p >= 0x05d0);
    }
}

然后您只需将其附加到您的 JTextField:

myHebrewTextField.setInputVerifier(new HebrewVerifier());