2009-12-25 14 views
40

उदाहरण के लिए मैं एक टेक्स्ट फ़ाइल से एक स्ट्रिंग स्ट्रिंग निकालने जा रहा हूं और मुझे उन शब्दों को एक सरणी बनाने की आवश्यकता है। हालांकि, जब मैं ऐसा कुछ करता हूं जो कुछ शब्द अल्पविराम (,) या पूर्ण स्टॉप (।) के साथ समाप्त होते हैं या यहां तक ​​कि उनके साथ जुड़े ब्रैकेट भी होते हैं (जो कि पूरी तरह से सामान्य है)।मैं जावा में किसी विशेष स्ट्रिंग से विशिष्ट वर्ण कैसे हटा सकता हूं?

मैं उन पात्रों से छुटकारा पाने के लिए क्या करना चाहता हूं। मैं जावा में उन पूर्वनिर्धारित स्ट्रिंग विधियों का उपयोग करने की कोशिश कर रहा हूं लेकिन मैं बस इसके आसपास नहीं जा सकता।

उत्तर

17

उपयोग:

String str = "whatever"; 
str = str.replaceAll("[,.]", ""); 

replaceAll एक regular expression लेता है। यह:

[,.] 

... प्रत्येक अल्पविराम और/या अवधि की तलाश करता है।

+0

धन्यवाद :) मुझे पता था कि यह कुछ मुश्किल नहीं था, बस इसके आसपास नहीं जा सका। –

+0

'replaceAll()' – raffian

+0

के लिए टूटी हुई लिंक अद्यतन शाब्दिक चार्टर में बहुत सारे पात्र। मैं वास्तव में इसे कैसे टाइप करूं? –

4

आप जावा में एक स्ट्रिंग को संशोधित नहीं कर सकते हैं। वे अपरिवर्तनीय हैं। आप जो भी कर सकते हैं वह एक नई स्ट्रिंग है जो पुराने स्ट्रिंग को प्रतिस्थापित कर रहा है, अंतिम चरित्र को घटाएं।

कुछ मामलों में एक स्ट्रिंगबफर आपकी मदद कर सकता है।

s = s.substring(0, s.length() - 1) 

इसके अलावा अपने समस्या को हल करने का एक वैकल्पिक तरीका:

+0

धन्यवाद। मैं इस तरह कुछ करने में कामयाब रहा: [कोड] (int i = 0; i

181

सबस्ट्रिंग तक चर पुन: असाइन करना तुम भी वर्ण आपके पास होने के लिए एक StringTokenizer का उपयोग कर फ़ाइल को पढ़ने और सीमांकक सेट करने के लिए विचार करना चाह सकते शब्दों का हिस्सा बनना नहीं चाहता।

+0

है कि मैं वास्तव में क्या किया था और यह काम किया :) BTW मैं कि StringTokenizer वर्ग का उपयोग सख्त मेरे गुरु से मना किया गया था उल्लेख करना भूल गया। –

+0

यह माइक्रो-बेंचमार्क सुझाव देता है कि इस संदर्भ में substring() regex से तेज हो सकता है: http://groups.google.com/group/comp.lang.java.programmer/msg/cf4e57a09eb8ff7c – trashgod

+2

@trashgod - आप नहीं करते आपको यह बताने के लिए एक माइक्रोबेंमार्क की आवश्यकता है। सामान्य ज्ञान की एक छोटी राशि ... और 'String.substring()' के स्रोत कोड को देखकर। –

0

ध्यान दें कि शब्द सीमाएं लोकेल पर भी निर्भर करती हैं। मुझे लगता है कि मानक java.text.BreakIterator का उपयोग कर इसे करने का सबसे अच्छा तरीका है। Java.sun.com ट्यूटोरियल से यहां एक उदाहरण दिया गया है।

import java.text.BreakIterator; 
import java.util.Locale; 

public static void main(String[] args) { 
    String text = "\n" + 
      "\n" + 
      "For example I'm extracting a text String from a text file and I need those words to form an array. However, when I do all that some words end with comma (,) or a full stop (.) or even have brackets attached to them (which is all perfectly normal).\n" + 
      "\n" + 
      "What I want to do is to get rid of those characters. I've been trying to do that using those predefined String methods in Java but I just can't get around it.\n" + 
      "\n" + 
      "Every help appreciated. Thanx"; 
    BreakIterator wordIterator = BreakIterator.getWordInstance(Locale.getDefault()); 
    extractWords(text, wordIterator); 
} 

static void extractWords(String target, BreakIterator wordIterator) { 
    wordIterator.setText(target); 
    int start = wordIterator.first(); 
    int end = wordIterator.next(); 

    while (end != BreakIterator.DONE) { 
     String word = target.substring(start, end); 
     if (Character.isLetterOrDigit(word.charAt(0))) { 
      System.out.println(word); 
     } 
     start = end; 
     end = wordIterator.next(); 
    } 
} 

स्रोत: http://java.sun.com/docs/books/tutorial/i18n/text/word.html

0

आप replaceAll() विधि का उपयोग कर सकते हैं:

String.replaceAll(",", ""); 
String.replaceAll("\\.", ""); 
String.replaceAll("\\(", ""); 

आदि ..

+0

प्रतिस्थापित सभी सभी वर्णों को केवल अंतिम वर्ण नहीं बल्कि प्रतिस्थापित करेंगे। –

7

अंतिम वर्ण को निकालने के लिए कर के रूप में Mark Byers कहा

s = s.substring(0, s.length() - 1); 

इसके अतिरिक्त, उन पात्रों को हटाने का एक और तरीका जिन्हें आप नहीं चाहते हैं .replace(oldCharacter, newCharacter) विधि का उपयोग करना होगा।

के रूप में:

s = s.replace(",",""); 

और

s = s.replace(".",""); 
+0

धन्यवाद, यह मुझे बहुत मदद करता है –

3

सबसे अच्छा तरीका है क्या मार्क बायर्स बताते हैं:

s = s.substring(0, s.length() - 1) 

उदाहरण के लिए, अगर हम अंतरिक्ष के लिए \ बदलना चाहते हैं " "ReplaceAll के साथ, यह ठीक काम नहीं करता

String.replaceAll("\\", ""); 

या

String.replaceAll("\\$", ""); //if it is a path 
+1

मुझे नहीं लगता कि यह एक बुरा जवाब है, लेकिन एक बात यह नहीं है कि यह अविश्वसनीय है। पहनकर देखो "" –

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