用于验证字符串是否包含 java 中的数值的字符串谓词
String Predicates to validate if a String contains numeric Value in java
java 中的任何谓词验证是否检查字符串是否包含数字?
我想允许特殊字符但不允许数字或空格。有检查字母的谓词,但它们不允许特殊字符,我需要一些只允许字母和特殊字符的东西,如果字符串包含空格或数字,则 return false。
我将使用正则表达式来展示我对问题的理解。您想要 Predicate<String>
对于任何字符串匹配 returns 为真
[a-zA-Z_]*
一种无规律地执行此操作的方法是使用 for 循环并检查每个字符:
Predicate<String> predicate = x -> {
for (int i = 0 ; i < x.length() ; i++) {
if (!Character.isLetter(x.charAt(i)) && !x.charAt(i) == '_') {
return false;
}
}
return true;
};
这是一个做同样事情的方法:
public static boolean test(String x) {
for (int i = 0 ; i < x.length() ; i++) {
if (!Character.isLetter(x.charAt(i)) && !x.charAt(i) == '_') {
return false;
}
}
return true;
}
可以用更优雅的方式来完成:
Predicate<String> p = (s -> s.matches("[a-zA-Z\_]*"));
为匹配 [a-zA-Z_]* 的任何字符串返回 true。
如果字符串至少包含一位数字或 space 个字符,则您的谓词应 return 为假,否则为真,您可以执行以下操作:
Predicate<String> p = s -> !s.matches(".*[ \d].*");
这种方法的优点是每个UTF-8字母和每个特殊字符在p中都是有效的。出于某种原因,其他答案只允许使用 ASCII 字母 ([a-zA-Z] 并且只允许使用下划线。我想这个问题同时被重写了。
java 中的任何谓词验证是否检查字符串是否包含数字?
我想允许特殊字符但不允许数字或空格。有检查字母的谓词,但它们不允许特殊字符,我需要一些只允许字母和特殊字符的东西,如果字符串包含空格或数字,则 return false。
我将使用正则表达式来展示我对问题的理解。您想要 Predicate<String>
对于任何字符串匹配 returns 为真
[a-zA-Z_]*
一种无规律地执行此操作的方法是使用 for 循环并检查每个字符:
Predicate<String> predicate = x -> {
for (int i = 0 ; i < x.length() ; i++) {
if (!Character.isLetter(x.charAt(i)) && !x.charAt(i) == '_') {
return false;
}
}
return true;
};
这是一个做同样事情的方法:
public static boolean test(String x) {
for (int i = 0 ; i < x.length() ; i++) {
if (!Character.isLetter(x.charAt(i)) && !x.charAt(i) == '_') {
return false;
}
}
return true;
}
可以用更优雅的方式来完成:
Predicate<String> p = (s -> s.matches("[a-zA-Z\_]*"));
为匹配 [a-zA-Z_]* 的任何字符串返回 true。
如果字符串至少包含一位数字或 space 个字符,则您的谓词应 return 为假,否则为真,您可以执行以下操作:
Predicate<String> p = s -> !s.matches(".*[ \d].*");
这种方法的优点是每个UTF-8字母和每个特殊字符在p中都是有效的。出于某种原因,其他答案只允许使用 ASCII 字母 ([a-zA-Z] 并且只允许使用下划线。我想这个问题同时被重写了。