2016-09-30 32 views
0

如果我有一個帶有數字和字符的字符串,並且我想用某個字符替換數字,則可以使用替換爲regualr表達式。但是它會用該字符替換EVERY號碼。什麼是改變這種行爲的最好方法?用一個字符替換任何數字序列

import java.util.Scanner; 


public class Regexp { 

    /** 
    * @param args the command line arguments 
    */ 
    public static void main(String[] args) { 
     Scanner firstname = new Scanner(System.in); 
     System.out.println("Enter you name"); 
     String firstname1 = firstname.next(); 
     firstname1 = firstname1.replaceFirst("[^A-Za-z]", ":"); 
     System.out.println(firstname1); 
     // TODO code application logic here 
    } 

} 

請參閱上面的代碼。如果我要進入jsahdk1283,它會返回jsahdk ::::,當我只想要jsahdk :.這可能嗎?字符類是指「一個或多個後

firstname1 = firstname1.replaceFirst("[^A-Za-z]+", ":"); 

這裏,+未來:

感謝, 本

+4

也許 「[^ A-ZA-Z] +」 – 2016-09-30 16:39:38

+4

使用'的replaceAll( 「\\ d +」, 「:」)' – TheLostMind

+0

我喜歡這兩種解決方案 – mangodreamz

回答

1

正如在評論中提到RCTheLostMind,你應該使用這樣一個量詞」。

請注意,[^A-Za-z]將匹配任何非英文字母,如重音字符和標點符號。因此使用\d是個好主意。

firstname1 = firstname1.replaceFirst("\\d+", ":"); 
+1

如果你想更換_only_數字,使用「\\ d +」,因爲「[^ A-Za-z] +」會替換所有不是字母的其他字符。這將包括像é或ä,冒號,逗號等外語字母。 –