जावा - एक स्ट्रिंग के पहले चरित्र को हटा रहा है


215

जावा में, मेरे पास एक स्ट्रिंग है:

Jamaica

मैं स्ट्रिंग के पहले चरित्र को निकालना चाहूंगा और फिर वापस लौटूंगा amaica

यह मैं कैसे करूंगा?

जवाबों:


341

स्थिति 1 ( पहले वर्ण के बाद ) से स्ट्रिंग के अंत तक प्रतिस्थापन प्राप्त करने के substring()तर्क के साथ फ़ंक्शन का उपयोग करें (दूसरे तर्क को डिफॉल्ट से स्ट्रिंग की पूरी लंबाई तक छोड़कर)।1

"Jamaica".substring(1);

21
यह ध्यान रखना महत्वपूर्ण है कि यह वास्तव में स्ट्रिंग से चरित्र को नहीं हटाता है - यह आपको एक नया स्ट्रिंग देता है जिसमें पुराने स्ट्रिंग के सभी अक्षर हैं सिवाय पहले वाले के। वास्तव में एक स्ट्रिंग को संशोधित करने का कोई तरीका नहीं है।
क्रिस डोड

यह लिंक अब वैध प्रतीत नहीं होता है। इसके बजाय नीचे दिए गए लिंक को आज़माएं: substring (int)
क्रिश्चियन हॉफ़मैन

1
हाँ, यदि आप एक स्ट्रिंग चर के पहले n वर्णों को निकालना चाहते हैं जो आप ऐसा करते हैं: चर = variable.substring (n);
मीतुल बट्टी

67
public String removeFirstChar(String s){
   return s.substring(1);
}

12
यदि आप एक नए फ़ंक्शन को परिभाषित करने जा रहे हैं, तो कम से कम एक उपयुक्त नाम चुनें removeFirst()
मोइनुद्दीन

55

substring()उन पात्रों की संख्या का उपयोग करें और दें जिन्हें आप सामने से ट्रिम करना चाहते हैं।

String value = "Jamaica";
value = value.substring(1);

उत्तर: "अमाइका"


47

जावा में, अग्रणी चरित्र को केवल तभी हटाएं जब यह एक निश्चित चरित्र हो

अपने चरित्र को हटाने से पहले यह जांचने के लिए जावा टर्नरी ऑपरेटर का उपयोग करें। यह अग्रणी चरित्र को केवल तब ही स्ट्रिप्स करता है यदि यह मौजूद है, यदि कोई रिक्त स्ट्रिंग पास की गई है, तो ब्लैंकस्ट्रिंग लौटें।

String header = "";
header = header.startsWith("#") ? header.substring(1) : header;
System.out.println(header);

header = "foobar";
header = header.startsWith("#") ? header.substring(1) : header;
System.out.println(header);

header = "#moobar";
header = header.startsWith("#") ? header.substring(1) : header;
System.out.println(header);

प्रिंटों:

blankstring
foobar
moobar

जावा, किसी वर्ण के सभी उदाहरणों को एक स्ट्रिंग में कहीं भी हटा दें:

String a = "Cool";
a = a.replace("o","");
//variable 'a' contains the string "Cl"

जावा, किसी वर्ण के पहले उदाहरण को एक स्ट्रिंग में कहीं भी हटा दें:

String b = "Cool";
b = b.replaceFirst("o","");
//variable 'b' contains the string "Col"

4
DRY:header = header.substring(header.startsWith("#") ? 1 : 0);
एरॉन ब्लेंकुष

3
या रेगेक्स के साथ:header = header.replaceFirst("^#","");
आरोन ब्लेनकुश

18

आप उस क्लास के सबस्ट्रिंग मेथड का उपयोग कर सकते हैं जो Stringकेवल शुरुआत इंडेक्स लेता है और निर्दिष्ट इंडेक्स पर कैरेक्टर के साथ शुरू होने वाले स्ट्रिंग को लौटाता है और स्ट्रिंग के अंत तक बढ़ाता है।

String str = "Jamaica";
str = str.substring(1);


11

जावा में समझने वाली महत्वपूर्ण बात यह है कि स्ट्रिंग्स अपरिवर्तनीय हैं - आप उन्हें बदल नहीं सकते हैं। इसलिए 'एक चरित्र को एक तार से हटाने' की बात करने का कोई मतलब नहीं है। इसके बजाय, आप केवल अपने इच्छित पात्रों के साथ एक नया स्ट्रिंग बनाते हैं। इस प्रश्न के अन्य पोस्ट आपको ऐसा करने के कई तरीके देते हैं, लेकिन यह समझना महत्वपूर्ण है कि ये किसी भी तरह से मूल स्ट्रिंग को नहीं बदलते हैं। आपके पास पुराने स्ट्रिंग के लिए कोई भी संदर्भ पुराने स्ट्रिंग को संदर्भित करता रहेगा (जब तक कि आप उन्हें किसी भिन्न स्ट्रिंग को संदर्भित करने के लिए नहीं बदलते हैं) और नए बनाए गए स्ट्रिंग से प्रभावित नहीं होंगे।

यह प्रदर्शन के लिए कई निहितार्थ हैं। हर बार जब आप एक स्ट्रिंग को 'संशोधित' कर रहे होते हैं, तो आप वास्तव में सभी ओवरहेड निहित (मेमोरी आवंटन और गारबेज संग्रह) के साथ एक नया स्ट्रिंग बना रहे होते हैं। इसलिए यदि आप एक स्ट्रिंग में संशोधनों की एक श्रृंखला बनाना चाहते हैं और केवल अंतिम परिणाम के बारे में परवाह करते हैं (जैसे ही आप उन्हें संशोधित करते हैं, तो मध्यवर्ती स्ट्रिंग्स मृत हो जाएंगे), इसके बजाय एक स्ट्रिंगबर्ल या स्ट्रिंगर का उपयोग करने के लिए अधिक समझदारी हो सकती है।


9

आप इस तरह कर सकते हैं:

String str="Jamaica";
str=str.substring(1, title.length());
return str;

या सामान्य तौर पर:

public String removeFirstChar(String str){
   return str.substring(1, title.length());
}

8

सबस्ट्रिंग () विधि एक नया स्ट्रिंग लौटाती है जिसमें एक अनुगामी होता है पात्रों में से वर्तमान में इस क्रम में निहित।

सबस्ट्रिंग निर्दिष्ट में शुरू होता है startऔर कम से चरित्र तक फैलीindex end - 1

इसके दो रूप हैं। पहला है

  1. String substring(int FirstIndex)

यहां, FirstIndex उस इंडेक्स को निर्दिष्ट करता है जिस पर प्रतिस्थापन शुरू होगा। यह प्रपत्र फर्स्टइंडेक्स पर शुरू होने वाले सबस्ट्रिंग की एक प्रति लौटाता है और इनवॉइसिंग स्ट्रिंग के अंत तक चलता है।

  1. String substring(int FirstIndex, int endIndex)

यहाँ, FirstIndex शुरुआत सूचकांक को निर्दिष्ट करता है, और EndIndex रोक बिंदु को निर्दिष्ट करता है। लौटी हुई स्ट्रिंग में आरंभिक सूचकांक से लेकर ऊपर तक के सभी वर्ण शामिल हैं, लेकिन अंत इंडेक्स शामिल नहीं हैं।

उदाहरण

    String str="Amiyo";
   // prints substring from index 3
   System.out.println("substring is = " + str.substring(3)); // Output "yo'

4

मैं एक ऐसी स्थिति में आया, जहां मुझे न केवल पहले चरित्र को हटाना पड़ा (अगर यह एक था #, बल्कि पात्रों का पहला सेट था।

String myString = ###Hello Worldप्रारंभिक बिंदु हो सकता है, लेकिन मैं केवल रखना चाहूंगा Hello World। यह निम्नलिखित के रूप में किया जा सकता है।

while (myString.charAt(0) == '#') { // Remove all the # chars in front of the real string
    myString = myString.substring(1, myString.length());
}

ओपी के मामले के लिए, के whileसाथ बदलें ifऔर यह काम करता है।


1
कोई समस्या होगी यदि myString == "#" क्योंकि स्ट्रिंग किसी बिंदु पर सीमा से बाहर होगी। इसे रोकने के लिए, आप कर सकते हैं (! MyString.isEmpty () && myString.charAt (0))
ईसाई

2

एक और समाधान, आप उदाहरण के लिए replaceAllकुछ रेगेक्स ^.{1}( रेगेक्स डेमो ) का उपयोग करके अपनी समस्या को हल कर सकते हैं :

String str = "Jamaica";
int nbr = 1;
str = str.replaceAll("^.{" + nbr + "}", "");//Output = amaica

1

प्रमुख वर्णों को हटाने का मेरा संस्करण, एक या एकाधिक। उदाहरण के लिए, स्ट्रिंग str1 = "01234", जब '0' को हटाते हैं, तो परिणाम "1234" होगा। एक स्ट्रिंग str2 के लिए = "000123" परिणाम फिर से "123" होगा। और स्ट्रिंग के लिए str3 = "000" परिणाम खाली स्ट्रिंग होगा: ""। संख्यात्मक स्ट्रिंग्स को संख्याओं में परिवर्तित करते समय ऐसी कार्यक्षमता अक्सर उपयोगी होती है। इस समाधान का लाभ रेगेक्स (रिप्लेसमैन (...)) के साथ तुलना में यह है कि यह बहुत तेज है। बड़ी संख्या में स्ट्रिंग्स को संसाधित करते समय यह महत्वपूर्ण है।

 public static String removeLeadingChar(String str, char ch) {
    int idx = 0;
    while ((idx < str.length()) && (str.charAt(idx) == ch))
        idx++;
    return str.substring(idx);
}
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.