2009-07-10 20 views
40

मेरे पास एक स्ट्रिंग है जिसमें अल्फान्यूमेरिक वर्ण होता है।स्ट्रिंग को संख्यात्मक संख्या के साथ कैसे शुरू किया जाए?

मुझे यह जांचने की ज़रूरत है कि स्ट्रिंग संख्या के साथ शुरू हुई है या नहीं।

धन्यवाद,

+1

हम्म, क्या आप अधिक विशिष्ट हो सकते हैं? जवाब ज्यादातर पहले चार की जांच कर रहे हैं। आप किस प्रकार की संख्या चाहते हैं? ये उत्तर नकारात्मक संख्याओं के लिए काम नहीं करेंगे! भी, आप संख्या के बाद क्या चाहते हैं ... कुछ भी? – Tom

+0

हां ... क्या आपका मतलब "संख्या" या "अंक" था ... अब मैं उलझन में हूं ... हर किसी को लगता है कि अंक संख्या का मतलब है ...:: sigh :: – Tom

+0

यह एक अच्छा मुद्दा है। मैंने सोचा कि उसका मतलब अंक था। अगर वह संख्या का मतलब है तो आप निश्चित रूप से regex चाहते हैं। –

उत्तर

68

एक regex का उपयोग करें देखें isDigit(char ch) विधि:

http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Character.html

और यह स्ट्रिंग String.charAt() विधि का उपयोग कर के पहले अक्षर के लिए गुजरती हैं।

Character.isDigit(myString.charAt(0)); 
+7

बस पूर्णता के लिए: isDigit केवल 0.9 नहीं बल्कि अन्य (जैसे अरबी) अंक भी सत्य देता है: http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Character .html # isDigit (char) –

+0

नाम के अधिकांश तरीकों के रूप में isXXX() है। मुझे लगता है कि विधि के नाम में अंतर्निहित है और मैंने प्रदान की गई विधि के लिंक को देखकर पाया जा सकता है ... – Jon

+0

@Csaba_H - FYI: 0-9 अरबी अंकों हैं - लेकिन मुझे आपकी बात मिलती है। – McDowell

1
System.out.println(Character.isDigit(mystring.charAt(0)); 

संपादित करें: मैं जावा डॉक्स के लिए खोज की, स्ट्रिंग वर्ग पर तरीकों जो मुझे 1 चरित्र & चरित्र वर्ग पर तरीकों को देखा अगर यह ऐसी बात की जांच करने के किसी भी विधि को देखने के लिए मिल सकता है पर देखा।

मुझे लगता है, आप इसे पूछने से पहले ऐसा कर सकते हैं।

ईडीआई 2: मेरा मतलब क्या है, चीजों को करने का प्रयास करें, & को पढ़ें/ढूंढें यदि आपको कुछ भी नहीं मिल रहा है - पूछें।
मैंने इसे पहली बार पोस्ट करते समय गलती की। IsDigit चरित्र वर्ग पर एक स्थिर विधि है।

+0

अच्छा सुझाव। इसके लिए +1। –

15

क्षमा करें मुझे आपका जावा टैग नहीं मिला, केवल प्रश्न पढ़ रहा था। मैं अपने अन्य उत्तरों को वैसे भी छोड़ दूंगा क्योंकि मैंने उन्हें टाइप कर दिया है।

जावा

String myString = "9Hello World!"; 
if (Character.isDigit(myString.charAt(0))) 
{ 
    System.out.println("String begins with a digit"); 
} 

सी ++:

string myString = "2Hello World!"; 

if (isdigit(myString[0])) 
{ 
    printf("String begins with a digit"); 
} 

नियमित अभिव्यक्ति:

\b[0-9] 

कुछ सबूत मेरे regex काम करता है: जब तक मेरा परीक्षण डेटा गलत नहीं है? alt text http://i29.tinypic.com/15z5pw8.png

+0

ब्रॉक: ओपी ने जावा टैग जोड़ा है (प्रश्न में निर्दिष्ट नहीं है)। – shahkalpesh

+0

शायद अब मैंने अपना जवाब तय कर दिया है जिसने मुझे वोट दिया है, पर पुनर्विचार करेगा? –

+1

मेरा मानना ​​है कि रेगेक्स गलत है। मेरे उत्तर में दिए गए कारणों के कारण नहीं (क्योंकि मुझे यकीन नहीं है कि मैं सही हूं, क्योंकि यह ओपी के इरादे पर निर्भर करता है ... उसे स्पष्ट करने की आवश्यकता है), लेकिन \ b की वजह से। \ बी एक शब्द सीमा है। आप स्ट्रिंग की शुरुआत में अंक को मजबूर करना चाहते हैं, इसलिए आपको^का उपयोग करना चाहिए। – Tom

5

यह काम करना चाहिए:

String s = "123foo"; 
Character.isDigit(s.charAt(0)); 
10

मुझे लगता है कि आप एक regex का उपयोग करना चाहिए:


import java.util.regex.*; 

public class Test { 
    public static void main(String[] args) { 
    String neg = "-123abc"; 
    String pos = "123abc"; 
    String non = "abc123"; 
     /* I'm not sure if this regex is too verbose, but it should be 
     * clear. It checks that the string starts with either a series 
     * of one or more digits... OR a negative sign followed by 1 or 
     * more digits. Anything can follow the digits. Update as you need 
     * for things that should not follow the digits or for floating 
     * point numbers. 
     */ 
    Pattern pattern = Pattern.compile("^(\\d+.*|-\\d+.*)"); 
    Matcher matcher = pattern.matcher(neg); 
    if(matcher.matches()) { 
     System.out.println("matches negative number"); 
    } 
    matcher = pattern.matcher(pos); 
    if (matcher.matches()) { 
     System.out.println("positive matches"); 
    } 
    matcher = pattern.matcher(non); 
    if (!matcher.matches()) { 
     System.out.println("letters don't match :-)!!!"); 
    } 
    } 
} 

आप चल बिन्दु संख्या स्वीकार करने के लिए इस समायोजित करने के लिए चाहते हो सकता है, लेकिन इस के लिए काम करेंगे नकारात्मक। अन्य उत्तर नकारात्मक के लिए काम नहीं करेंगे क्योंकि वे केवल पहले चरित्र की जांच करते हैं! अपनी जरूरतों के बारे में अधिक विशिष्ट रहें और मैं इस दृष्टिकोण को समायोजित करने में आपकी सहायता कर सकता हूं।

+0

http://java.sun.com/j2se/1.4.2/docs/api/java/util/regex/Pattern.html – Johan

+5

यह "पहला चरित्र एक अंक है" के लिए एक बेहद जटिल समाधान है – skaffman

+0

प्रश्न +1 संदिग्ध था और यह निर्दिष्ट नहीं था कि "पहला चरित्र एक अंक है" – Pablojim

संबंधित मुद्दे