来自科隆的晚上好。
在编程任务中,我必须检查给定字符串是否包含仅 字母和/或连字符。现在我采用了匹配的方法。在测试中:“test-test-test”我的代码给了我错误。应该是真的。你知道问题出在哪里吗?我在比赛中误解了吗?我提前谢谢你。美丽的夜晚!
public class Zeichenketten {
public static boolean istName(String a) {
if (a.matches("[a-zA-Z]+") || a.matches("[-]+")) {
return true;
}
else {
return false;
}
}
}
答案 0 :(得分:4)
目前,您需要检查是否所有字母或所有连字符。您只需要检查它是否匹配字母或连字符:
public static boolean istName(String a) {
return a.matches("[a-zA-Z-]+");
}
最后的-
表示"连字符"而不是"范围的一部分"。
请注意if / else的简化 - 只要你写if (condition) return true; else return false;
,你就应该写return condition;
来简化。
答案 1 :(得分:0)
您的代码与测试字符串不匹配,因为String.matches()方法仅在整个字符串与正则表达式匹配时才返回true。在第一种情况下:var x = '12';
x = prseInt(x);
您不匹配,因为您在字符串中有if(parseInt(v) !== NaN)
do stuff// means variable is number
符号,在第二种情况下,模式为[a-zA-Z]+
您不匹配,因为您在字符串中有字母。< / p>
答案 2 :(得分:0)
你使用错误的条件。 您必须创建一个正则表达式并创建良好的模式。
我推荐此页面:https://regex101.com/用于测试在线正则表达式。
试试这个例子:
public static boolean istName(String a) {
if (a.matches("[a-zA-Z-]+")) {
return true;
} else {
return false;
}
}
答案 3 :(得分:-2)
连字符的ASCII值为45,并且您知道字符串是一个字符数组。所以你有一个循环检查给定字符串的每个字符,如果它找到一个ASCI 45,返回true,否则返回false。