强制用户只添加希伯来字母
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());
如何使 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());