2014-01-15 155 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

對不起,我想忽略任何非字母的東西,但如果它是大寫字母我想保留它,但它與其他字匹配時不重要例如娜塔莉將等於娜塔莉 –

相關問題