如何检查sting中的前2个字母是否为特定值

时间:2015-12-21 15:23:40

标签: java

编辑感谢帮助人们现在就开始工作。

所以我有一个问题要问用户的名字和姓氏,我没有遇到任何问题,但后来我认为扩展程序是好的,这样如果有人输入像McCabe这样的姓氏就会打印T麦克而不是TM。我只是不确定如何比较第二个字符串字符串的前两个字母,看它们是"mc"

public class InitialsAlt {

  public static void main(String [] args){

    Scanner keyboardIn = new Scanner (System.in);
    String firstname = new String();
    System.out.print (" Enter your first name ");
    firstname = keyboardIn.nextLine();
    String secondname = new String();
    System.out.print (" Enter your second name ");
    secondname = keyboardIn.nextLine();

   if(secondname.charAt(0, 1)== "mc" ) {
      System.out.print("Your initals are " + firstname.charAt(0)+    secondname.charAt(0,1,2)); 
   }

   else {
   System.out.print("Your initals are " + firstname.charAt(0)+ secondname.charAt(0));
   }

  }
}

5 个答案:

答案 0 :(得分:6)

if (secondName.toLowerCase().startsWith("mc")) {

答案 1 :(得分:2)

最简单的方法是使用1: login=luser-name&password=<redacted>&otherstuff=dontcare 2: login=luser-name&password=<redacted> 3: login=luser-name&password=secretpw 4: login=luser-name&password=<redacted>

String.startsWith

如果您想避免缩小整个字符串或创建新对象,只需检查前两个字符:

yourString.toLowerCase().startsWith("mc")

但是,我会使用前一个解决方案,因为它更具可读性,并且从小写整个字符串中获得的性能几乎肯定可以忽略不计,除非你在相当大的字符串上执行此操作。

答案 2 :(得分:1)

使用substring获取前两个字母,然后转换为小写,然后检查它是否等于:

String someString = "McElroy";
if (someString.subString(0,2).toLowerCase().equals("mc")) {
    //do something
}

答案 3 :(得分:1)

使用yourString.toLowerCase().indexOf("mc")==0。这将只涉及创建一个新的String一次(因为indexOf()没有创建新的String,使用indexOf()会比在这里使用subString()更好。

答案 4 :(得分:1)

如果不区分大小写,您可以使用Apache Commons Lang库:

if(StringUtils.startsWithIgnoreCase(secondname, "mc") {
  // Do nice stuff
}

否则,您可以使用:

if(StringUtils.startsWith(secondname.toLowerCase(), "mc") {
  // Do nice stuff
}