2014-01-15 101 views
1

概率愚蠢的问题,但这里有云:忽略任何非字母字符和大写字母从字符串

我期待忽略字符串的任何非字母字符,也大写字母。

 if (names[j].matches("[a-zA-Z]+")){ 
      System.out.println(names[j] + ":"); 
     } 

我有类似的东西,以测试是否有被赋予了非字母字符和它的作品,只是不知道如何将它们忽略这样。

任何建议都会很棒。谢谢。

+0

你是什么意思忽略不?把他们从字符串中取出,或者如果他们在场,不要去做? – gtgaxiola

+0

我的意思是,如果NAtalie7 @被输入,那么natalie会被考虑?我认为把它们拿出来,把字符串改为全部小写字母将是最好的方法,但是想知道是否有可能在不移除的情况下忽略它们。上面的代码是一个快速测试,以检查输入是否不是所有字母。 –

回答

1

Exapnding上@Jeff楼层的回答是:

你做一个用空字符串 更换正则表达式[^a-zA-Z]+如果你真的不想忽略上面的情况

将转换为更换后字符串转换成小写

public static void main(String[] args) throws Exception { 
    String hello = "[email protected]"; 
    hello = hello.replaceAll("[^a-zA-Z]+","").toLowerCase(); 
    System.out.println(hello); 
} 

将输出:

natalie 

如果你想忽略的第一个字符,无论它是什么,那么你可以使用:

String hello = "[email protected]"; 
String ignoreFirstChar = hello.charAt(0) + (hello.substring(1,hello.length()).replaceAll("[^a-zA-Z]+", "").toLowerCase()); 
System.out.println(ignoreFirstChar); 

将输出:

Natalie 
+0

谢谢你,我曾经认为这是最好的选择,但想要仔细检查。为愚蠢的问题道歉:) –

+0

@NatalieCarr没问题! :D – gtgaxiola

+0

对不起,快速的问题,有没有办法跳过第一个字符?所以只有在第一个字符之后进行替换,而不管它是否需要替换? –

1

如果您想忽略它们并将它们去掉,只需使用正则表达式来匹配它们,并用空字符串替换它们即可。 String#replaceAll可以采取正则表达式。

+0

我想他们也不想大写,所以它会是'names [j] .replaceAll(“[a-z] +”,“”);'而不是? – ansible

+0

@ansible我读了相反的我正在替换字母字符而不是其他方式 – gtgaxiola

+0

对不起,我想忽略任何非字母的东西,但如果它是大写字母我想保留它,但它与其他字匹配时不重要例如娜塔莉将等于娜塔莉 –

相关问题