2012-12-18 20 views
7

Hãy nói rằng tôi có một mảng chuỗi có chứa một số chữ cái và dấu chấm câuKiểm tra xem chuỗi là một nhân vật dấu chấm câu

String letter[] = ["a","b","c",".","a"] 

Trong bức thư [3] chúng tôi có ""

Tôi muốn kiểm tra bằng cách sử dụng vòng lặp for nhưng làm cách nào tôi có thể thực hiện câu lệnh if? Chúng ta biết rằng có thể có dấu chấm câu

tiến bộ của tôi cho đến nay (, vv.?!):

for(int a=0; a<letter.length;a++) 
{ 
if(letter[a].equals(".")) ===>> i'm confused in this line 
{ 
System.out.println ("its puctuation"); 
} 
else 
{ 
System.out.println ("just letter"); 
} 
+3

Bạn có thể sử dụng regex cho mục đích này. Nó rất tiện dụng. – Smit

+0

@smit, bạn có thể cho tôi gợi ý không? – sephtian

+0

Điều này sẽ cung cấp cho bạn một số ý tưởng: [Dấu chấm câu Regex trong Java] (http://stackoverflow.com/questions/8200908/punctuation-regex-in-java) – Stanley

Trả lời

16

Bạn có muốn kiểm tra các dấu câu khác hơn là chỉ . không?

Nếu bạn có thể thực hiện việc này.

String punctutations = ".,:;";//add all the ones you want. 
... 
if(punctutations.contains(letter[a])) 
+0

cảm ơn! đơn giản nhưng hoạt động – sephtian

+2

Giải pháp này ngụ ý rằng bạn chỉ định thủ công tất cả các dấu chấm câu. Định nghĩa về 'dấu chấm câu' chắc chắn không đầy đủ. –

+0

Điều này là không đủ. Có rất nhiều ngôn ngữ có dấu câu khác nhau. Những thậm chí không bao gồm các bảng chữ cái Latin. Thay vào đó, hãy sử dụng \ p {P} hoặc \ p {Dấu câu} – andreyro

2

Hãy thử phương pháp này: Character.isLetter(). Nó trả về true nếu ký tự là một chữ cái (a-z, chữ hoa hoặc chữ thường), trả về false nếu ký tự là số hoặc ký hiệu.

ví dụ: boolean answer = Character.isLetter ('!');

câu trả lời sẽ bằng false.

44

Dưới đây là một cách để làm điều đó với biểu thức thông thường:

if (Pattern.matches("\\p{Punct}", str)) { 
    ... 
} 

Các biểu hiện thường xuyên \p{Punct} là một mô hình POSIX đại diện cho một đơn chấm câu nhân vật.

-3

function has_punctuation(str) { 
 

 
    var p_found = false; 
 
    var punctuations = '`[email protected]#$%^&*()_+{}|:"<>?-=[]\;\'.\/,'; 
 
    $.each(punctuations.split(''), function(i, p) { 
 
    if (str.indexOf(p) != -1) p_found = true; 
 
    }); 
 

 
    return p_found; 
 

 
}

Các vấn đề liên quan