2013-07-07 43 views
14

Tôi đã suceeded với sự giúp đỡ của cộng đồng này trong việc loại bỏ các giá trị số từ người dùng nhập vào, tuy nhiên, mã của tôi dưới đây sẽ chỉ lấy ký tự chữ trước số đó đã bị xoá:Java: loại bỏ các giá trị số từ chuỗi

import java.util.Scanner; 

public class Assignment2_A { 

    public static void main(String[] args) { 
     // TODO Auto-generated method stub 
     Scanner firstname = new Scanner(System.in); 
     System.out.println("Please enter your first name:"); 
     String firstname1 = firstname.next(); 
     firstname1 = firstname1.replaceAll("[^A-Z]",""); 
     System.out.println(firstname1); 


     } 

} 

Ví dụ: nếu người dùng nhập = S1234am, tôi chỉ nhận lại: S. Làm cách nào để truy xuất các ký tự còn lại trong chuỗi?

+1

u cần phải thay thế chữ thường cũng –

Trả lời

6

Cụm từ thông dụng của bạn [^A-Z] hiện chỉ được định cấu hình để giữ chữ hoa. Bạn có thể thử thay thế nó bằng [^A-Za-z] để giữ các chữ thường.

+0

nó sẽ không làm việc cho các ký tự đặc biệt như 'éèëàç'. –

+1

Thật vậy. Nếu mục tiêu thực sự là xóa tất cả các chữ số, thì việc sử dụng '\\ d' sẽ tốt hơn, nhưng cách nó được thiết kế hiện tại cho thấy mục đích có thể là chỉ bảo vệ 'A-Za-z'. – Gian

+0

Gian, Cảm ơn sự giúp đỡ của bạn. Tôi sẽ cung cấp cho bạn một ngón tay cái lên nhưng dường như tôi quá mới trên trang web này để làm như vậy. Cảm ơn bạn đã dành thời gian! – user2558595

34

này sẽ loại bỏ tất cả các chữ số:

firstname1 = firstname1.replaceAll("\\d",""); 
0

regex của bạn:

[^A-Z] 

phù hợp với bất cứ điều gì mà không phải là một hoa lá thư.

Có nghĩa là bất kỳ chữ thường nào cũng sẽ khớp với nhau.

Bạn có lẽ nên sử dụng:

[^A-Za-z] 

như một regex để thay thế.

Cũng lưu ý rằng điều này sẽ không tính đến bất kỳ điều gì khác ngoài ASCII. Nó có thể, hoặc có thể không, là những gì bạn muốn.

+0

Điều này sẽ không hoạt động đối với các ký tự đặc biệt như 'éèëàç'. –

+0

Vâng, tôi biết, đó là lý do tại sao tôi chỉnh sửa cho điều đó. – fge

+0

Cảm ơn bạn đã dành thời gian và chuyên môn! – user2558595

15

Bạn có thể sử dụng:

firstname1 = firstname1.replaceAll("[0-9]",""); 

Điều này sẽ loại bỏ tất cả các giá trị số từ String firstName1.

String firstname1 = "S1234am"; 
    firstname1 = firstname1.replaceAll("[0-9]",""); 
    System.out.println(firstname1);//Prints Sam 
1

Làm thế nào để loại bỏ các giá trị số từ một chuỗi:

để làm điều này nó sẽ đủ

str.replaceAll("[^A-Za-z]",""); 

nhưng những gì nếu chuỗi của bạn chứa các ký tự như:

String str = "stackoverflow elenasys +34668555555 # Пивоварова Пивоварова հայեր հայեր አማሪኮ  አማሪኮ kiểm tra kiểmtra ตรวจสอบ ตรวจสอบ التحقق من التحقق من"; 

hầu hết các ký tự cũng sẽ bị xóa, vì vậy đây là một lựa chọn tốt hơn:

str = str.replaceAll("[\\d.]", ""); 

để loại bỏ tất cả các giá trị số và nhận được kết quả:

stackoverflow elenasys + # Пивоварова Пивоварова հայեր հայեր አማሪኮ  አማሪኮ kiểm tra kiểmtra ตรวจสอบ ตรวจสอบ التحقق من التحقق من 
Các vấn đề liên quan