2012-12-11 34 views
5

tôi muốn kiểm tra xem chuỗi tôi lấy từ một Textfield có dấu phẩy hay không, để thả nó và yêu cầu một giá trị mới có dấu chấm.Đối sánh một chuỗi có dấu phẩy (ví dụ 1,5)

tôi cố gắng để sử dụng

textTestAr.trim().matches("^[,]+$")  

nhưng có gì xảy ra, trong khi điều này

 ^[1-9,]+$  

hiện các trick, nhưng cũng phù hợp với con số như 1.

+0

Có gì sai với 'trận ("")'? – djechlin

+0

@djechlin rằng 'kết quả khớp' cần phải khớp với toàn bộ chuỗi –

Trả lời

3

Các caret ^ phù hợp với đầu văn bản. [,]+ khớp với số lượng dấu phẩy tùy ý. Những gì bạn cần là điều gì đó để bỏ qua mọi thứ trước và sau mục bạn đang tìm kiếm:

^.*[,].*$ 

Dấu chấm khớp với bất kỳ ký tự nào ngoại trừ dòng mới. * là sự lặp lại (0 - bất kỳ số nào).

Lưu ý rằng cắt xén chuỗi là không cần thiết tại đây.

10

Bạn không cần phải buộc biểu thức chính quy về vấn đề này. Một đơn giản textTestAr.indexOf(',') sẽ làm.

+0

Tôi không đồng ý. Tốt hơn tổng thể và thanh này một công cụ cần thiết hơn bao giờ hết vất vả với 'indexOf' và bạn bè. – krlmlr

+5

@ user946850 Một bậc thầy thực sự vận dụng tất cả các công cụ có sẵn với ân sủng bằng nhau. Nếu đây là ruby ​​hoặc perl, thì nó sẽ là thành ngữ để xử lý mọi thứ với regexps, nhưng trong Java regex không phải là một công dân hạng nhất. –

+0

Bạn sẽ làm gì nếu yêu cầu tiếp theo đối với mã này là kiểm tra xem nó có được làm bằng các chữ số và một dấu chấm không? Hoặc nếu bạn muốn kiểm tra các ký tự khác? Hoặc ... So sánh nỗ lực thay đổi biểu thức chính quy bằng cách thay thế: Trước tiên hãy sử dụng công cụ "đơn giản" (điều gì xảy ra lần nữa nếu không tìm thấy kết quả nào? -1? Ngoại lệ? Hãy tra cứu API ...) để khám phá bạn cần "công cụ". – krlmlr

1

Đầu tiên xác nhận rằng toàn bộ chuỗi được tạo thành từ dấu phẩy. Điều thứ hai khẳng định rằng chuỗi được tạo thành từ các chữ số (trừ 0) và dấu phẩy, nhưng không yêu cầu một số cụ thể. Bạn có thể sử dụng này:

.*,.* 

Lưu ý rằng bạn không cần ^...$ khi sử dụng matches (vì họ đang tiềm ẩn). Tuy nhiên, giải pháp indexOf đơn giản như Marko hoặc yentup's vẫn tốt hơn.

0

Đừng cần regex cho rằng:

textTestAr.trim().replace(',','.'); 
4

Chỉ cần làm if(textTestAr.contains(",")) System.out.println("It does!");

0
public boolean hasComma(String string) { 
    if (string.indexOf(",") > -1) { 
     return true; 
    } 
    return false; 
} 
Các vấn đề liên quan