Java 检查字符串是否仅由具有匹配项的字母和/或连字符组成?
晚上好,科隆 在编程任务中,我必须检查给定字符串是否仅由字母和/或连字符组成。现在我有了一种匹配的方法。在对单词的测试中:“test”我的代码给了我false。应该是真的。你知道我的问题在哪里吗?我在比赛中误会了吗?我先谢谢你。美丽的夜晚Java 检查字符串是否仅由具有匹配项的字母和/或连字符组成?,java,string,task,Java,String,Task,晚上好,科隆 在编程任务中,我必须检查给定字符串是否仅由字母和/或连字符组成。现在我有了一种匹配的方法。在对单词的测试中:“test”我的代码给了我false。应该是真的。你知道我的问题在哪里吗?我在比赛中误会了吗?我先谢谢你。美丽的夜晚 public class Zeichenketten { public static boolean istName(String a) { if (a.matches("[a-zA-Z]+") || a.matches(
public class Zeichenketten {
public static boolean istName(String a) {
if (a.matches("[a-zA-Z]+") || a.matches("[-]+")) {
return true;
}
else {
return false;
}
}
}
目前,您正在检查是所有字母还是所有连字符。您只需检查它是否匹配字母或连字符: 末尾的
-
表示“连字符”,而不是“范围的一部分”
注意if/else之外的简化-无论何时编写
if(condition)返回true;否则返回false
您应该只编写返回条件代码>为简单起见。您的代码与测试字符串不匹配,因为只有当整个字符串按正则表达式模式匹配时,该方法才会返回true。在第一种情况下:[a-zA-Z]+
您不匹配,因为字符串中有-
符号;在第二种情况下,模式是[-]+
您不匹配,因为字符串中有字母。连字符的ASCII值为45,您知道字符串是一个字符数组。所以您有一个循环来检查给定字符串的每个字符,若它找到一个带有ASCI 45的字符,则返回true,否则返回false。您使用了错误的条件。
您必须创建一个正则表达式并创建良好的模式
我推荐这个页面:用于测试在线正则表达式
请尝试以下示例:
public static boolean istName(String a) {
if (a.matches("[a-zA-Z-]+")) {
return true;
} else {
return false;
}
}
@亚西莉亚:谢谢,修好了。不,那不行。“0123-1234”不包含“-”,但不应匹配。(也不必担心ASCII值是什么。)Moin Moin;-)代码不是用英文写的只是。。。看。。。奇怪的(顺便说一句,我是土生土长的)。谢谢你的评论@StefanHanke。但在我的大学里,练习是德语的s
public static boolean istName(String a) {
if (a.matches("[a-zA-Z-]+")) {
return true;
} else {
return false;
}
}