2011-02-25 10 views
7

मैं उन शब्दों को ढूंढना चाहता हूं जो जावा में एक स्ट्रिंग में "#" चिह्न से शुरू होते हैं। संकेत और शब्द के बीच भी रिक्त स्थान हो सकते हैं।शब्दों को विशेष वर्ण जावा से शुरू करें

स्ट्रिंग "hi #how are # you" आउटपुट के रूप में देना होगा:

how 
you 

मैं regex के साथ इस की कोशिश की है, लेकिन अभी भी एक उपयुक्त पैटर्न नहीं पा सके। कृपया इस पर मेरी सहायता करें।

धन्यवाद।

उत्तर

10

#\s*(\w+) अपने रेगेक्स के रूप में उपयोग करें।

String yourString = "hi #how are # you"; 
Matcher matcher = Pattern.compile("#\\s*(\\w+)").matcher(yourString); 
while (matcher.find()) { 
    System.out.println(matcher.group(1)); 
} 

यह प्रिंट आउट देगा:

how 
you 
+0

सहायता विचार, जो और न्यूटन के लिए धन्यवाद। यह काम करता हैं। मैं उन सभी शब्दों को भी प्राप्त करना चाहता हूं जो अंतिम # चिह्न के बाद दिखाई देते हैं। 'उदाहरण: "नमस्ते # कैसे हैं # आप कर रहे हैं" आउटपुट देना चाहिए कि आप कैसे कर रहे हैं' वैसे भी इसे प्राप्त करने के लिए है? – gishara

+0

यह एक अलग सवाल है और आप इसे रेगेक्स ('Pattern.compile (" # \\ s * ([^ #] + $ | \\ w +) ") के साथ हल कर सकते हैं,"), यह भ्रमित हो सकता है ... – ide

+0

धन्यवाद मदद के लिए बहुत कुछ। यही वह था जो मैं चाहता था। :) – gishara

0

इस अभिव्यक्ति का प्रयास करें:

# *(\w+) 

यह कहते हैं, मैच # तो 0 या अधिक रिक्त स्थान और 1 या अधिक अक्षर

+0

क्यों एक चरित्र वर्ग में जगह नहीं है? – NullUserException

+0

मैं खुद को सोच रहा था, thx – Joe

0

मैं तुम्हें अपने स्ट्रिंग पर विभाजन विधि का उपयोग कर बंद सबसे अच्छा हो सकता है लगता है से मेल खाते हैं (mystring.split ('')) और दोनों मामलों को अलग से इलाज। रेगेक्स को बनाए रखने और पढ़ने के लिए मुश्किल हो सकती है यदि आप कोड को अपडेट करने वाले कई लोगों के पास जा रहे हैं।

if (word.charAt(0) == '#') { 
    if (word.length() == 1) { 
    // use next word 
    } else { 
    // just use current word without the # 
    } 
} 
0

यहाँ एक गैर नियमित अभिव्यक्ति दृष्टिकोण है ...

  1. एक # के साथ अपने स्ट्रिंग में फिर एक रिक्ति की सभी घटनाओं की जगह एक #

    myString.replaceAll ("\ s #", "#")

  2. अब टोकन में स्ट्रिंग विभाजित अपने सीमांकित चरित्र के रूप में स्थान का उपयोग कर

    String [] शब्द = myString.split ("")

  3. अंत में अपने शब्दों से अधिक पुनरावृति और अग्रणी चरित्र के लिए जाँच

    word.startsWith ("#")

-1
 String mSentence = "The quick brown fox jumped over the lazy dog."; 

     int juIndex = mSentence.indexOf("ju"); 
     System.out.println("position of jumped= "+juIndex); 
     System.out.println(mSentence.substring(juIndex, juIndex+15)); 

     output : jumped over the 
     its working code...enjoy:) 
संबंधित मुद्दे