2012-12-11 7 views
5

मैं अगर स्ट्रिंग मैं एक Textfield से लेते हैं, एक अल्पविराम है ताकि इसे छोड़ और डॉट के साथ एक नया मूल्य के लिए पूछने के लिए में जाँच करना चाहते हैं।मैच एक स्ट्रिंग एक अल्पविराम से युक्त (जैसे 1,5)

मैं

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

इस्तेमाल करने की कोशिश, लेकिन कुछ नहीं होता है, जबकि इस

 ^[1-9,]+$  

काम कर देता है, लेकिन यह भी तरह 1.

+0

क्या 'मैचों (" ")' के साथ गलत क्या है? – djechlin

+0

@ डीजेक्लिन कि 'मैचों' को पूरे स्ट्रिंग –

उत्तर

3

कैरट ^ से मेल खाता है पाठ की शुरुआत। [,]+ अल्पविराम की अल्पसंख्यक संख्या से मेल खाता है।

^.*[,].*$ 

डॉट न्यू लाइन को छोड़कर किसी भी चरित्र से मेल खाता है: क्या आप की जरूरत है सब कुछ अनदेखी करने के लिए कुछ करने से पहले और आइटम के बाद आप देख रहे हैं के लिए है। * पुनरावृत्ति है (0 - कोई भी संख्या)।

ध्यान दें कि स्ट्रिंग को ट्रिम करना अनावश्यक है।

10

आप के लिए मजबूर करने की जरूरत नहीं है संख्या से मेल खाता है इस समस्या पर नियमित अभिव्यक्तियां। एक साधारण textTestAr.indexOf(',') करेगा।

+0

से मेल खाने की आवश्यकता है, मैं असहमत हूं। बेहतर मास्टर और 'indexOf' और दोस्तों के साथ कभी भी झुकाव की तुलना में यह एक आवश्यक टूल चिपकाएं। – krlmlr

+5

@ user946850 एक सच्चे मास्टर सभी उपलब्ध उपकरणों को समान अनुग्रह के साथ संचालित करता है। यदि यह रूबी या पर्ल था, तो यह regexps के साथ सबकुछ संभालने के लिए मूर्खतापूर्ण होगा, लेकिन जावा रेगेक्स में प्रथम श्रेणी के नागरिक नहीं हैं। –

+0

यदि कोड की अगली आवश्यकता यह जांचने के लिए है कि यह केवल अंकों और एक बिंदु से बना है तो आप क्या करते हैं? या यदि आप अन्य पात्रों के लिए भी जांचना चाहते हैं? या ... विकल्प के साथ नियमित अभिव्यक्ति को बदलने के प्रयास की तुलना करें: सबसे पहले "सरल" टूल का उपयोग करें (यदि कोई मिलान नहीं मिलता है तो फिर क्या होता है? -1? अपवाद? चलो एपीआई देखें ...) बस खोजने के लिए कि आपको वैसे भी "उपकरण" की आवश्यकता है। – krlmlr

1

पहले एक का दावा है कि पूरी स्ट्रिंग केवल अल्पविराम के से बना है। दूसरा यह दावा करता है कि स्ट्रिंग अंकों से बना है (0 के अलावा) और अल्पविराम, लेकिन उनमें से एक विशिष्ट आवश्यकता नहीं है।

.*,.* 

ध्यान दें कि आप ^...$ जब matches का उपयोग कर (क्योंकि वे निहित हैं) की जरूरत नहीं है: आप इस इस्तेमाल कर सकते हैं। लेकिन मार्को या येंटअप के रूप में एक सरल indexOf समाधान वैसे भी बेहतर है।

0

पेश करते हैं regex की जरूरत नहीं है:

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

बस कर if(textTestAr.contains(",")) System.out.println("It does!");

0
public boolean hasComma(String string) { 
    if (string.indexOf(",") > -1) { 
     return true; 
    } 
    return false; 
} 
संबंधित मुद्दे