检查String是否包含我想要的字母以及它末尾的空格

时间:2016-02-17 14:16:38

标签: java

我正在寻找一种方法来检查用户输入的String是否包含两件事: 首先:它应该以" hello"(它的hello和whitspace!)或者以数字开头。如果两者都是假的,我想打印出假,如果其中一个是真的我打印出真。

if (text.startsWith("hello ") == false)
{
    if (Character.isDigit(text.CharAt(0)) == false)
    { 
        System.out.println("false"); 
    }

    Syso("true"); 
}
Syso("true");

我知道在这种情况下,两个If不是最明智的选择,但我很好。我现在唯一的问题是,如果文字是"你好"所以没有空格,它仍然给我真实。是否必须对方法startsWith做些什么?有另一种方法可以使用吗?

抱歉,我的英语很糟糕,我对编程很了解。但是感谢feedbak

4 个答案:

答案 0 :(得分:1)

如果其中一个条件成立,您希望某些事情成立。因此,这是一个逻辑or

System.out.println(text.startsWith("hello ") || Character.isDigit(text.charAt(0)));

答案 1 :(得分:0)

if (! text.startsWith ("hello ") && ! Character.isDigit (text.charAt (0)) {
          Syso ("false"); 
}
else Syso ("true"); 

这可以进一步缩小。如果(!a&&!b)等同于if(!(a || b))。

if (! (text.startsWith ("hello ") || Character.isDigit (text.charAt (0)))) {
          Syso ("false"); 
}
else Syso ("true"); 
然而,否定这种情况令人困惑。因此,如果没有充分的理由,你应该制定一个积极的,因此更简单的条件:

    if (text.startsWith ("hello ") || Character.isDigit (text.charAt (0))) 
              Syso ("true"); 
    else Syso ("false"); 

我无法使用空白重现您的错误 - 也许您因过多的否定而欺骗自己?

请注意,您应该测试示例代码以重现错误 - 并剪切并粘贴它,以防止出现新错误。 String.charAt(0)必须以方法名称中较低的c开头。

请注意,在结束括号后需要“其他”才能达到目标。

答案 2 :(得分:0)

在代码中包含print语句的方式是错误的。您的代码中的问题是,如果它不以'hello'开头,则它进入if块。如果它不是以数字开头,则进一步进入内部if,打印为false。一旦它出来,它打印为true,然后在外面,如果它再次打印为真。

if (str.startsWith("hello ") || Character.isDigit(str.charAt(0))) {
    System.out.println("True");
}
else{
    System.out.println("False");
}

答案 3 :(得分:0)

尝试使用trim()方法,trim从文本中删除空格:

String txt = "hello ";
System.out.println(txt.trim() + jhon);

console: hellojhon