检查字符串是否仅包含带匹配的字母和/或连字符?

时间:2017-12-03 18:34:29

标签: java string task

来自科隆的晚上好。

在编程任务中,我必须检查给定字符串是否包含 字母和/或连字符。现在我采用了匹配的方法。在测试中:“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;
            } 
        }
}

4 个答案:

答案 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。