जावा में, मेरे पास एक स्ट्रिंग है:
Jamaica
मैं स्ट्रिंग के पहले चरित्र को निकालना चाहूंगा और फिर वापस लौटूंगा amaica
यह मैं कैसे करूंगा?
जावा में, मेरे पास एक स्ट्रिंग है:
Jamaica
मैं स्ट्रिंग के पहले चरित्र को निकालना चाहूंगा और फिर वापस लौटूंगा amaica
यह मैं कैसे करूंगा?
जवाबों:
स्थिति 1 ( पहले वर्ण के बाद ) से स्ट्रिंग के अंत तक प्रतिस्थापन प्राप्त करने के substring()
तर्क के साथ फ़ंक्शन का उपयोग करें (दूसरे तर्क को डिफॉल्ट से स्ट्रिंग की पूरी लंबाई तक छोड़कर)।1
"Jamaica".substring(1);
public String removeFirstChar(String s){
return s.substring(1);
}
removeFirst()
।
substring()
उन पात्रों की संख्या का उपयोग करें और दें जिन्हें आप सामने से ट्रिम करना चाहते हैं।
String value = "Jamaica";
value = value.substring(1);
उत्तर: "अमाइका"
अपने चरित्र को हटाने से पहले यह जांचने के लिए जावा टर्नरी ऑपरेटर का उपयोग करें। यह अग्रणी चरित्र को केवल तब ही स्ट्रिप्स करता है यदि यह मौजूद है, यदि कोई रिक्त स्ट्रिंग पास की गई है, तो ब्लैंकस्ट्रिंग लौटें।
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"
header = header.substring(header.startsWith("#") ? 1 : 0);
header = header.replaceFirst("^#","");
आप उस क्लास के सबस्ट्रिंग मेथड का उपयोग कर सकते हैं जो String
केवल शुरुआत इंडेक्स लेता है और निर्दिष्ट इंडेक्स पर कैरेक्टर के साथ शुरू होने वाले स्ट्रिंग को लौटाता है और स्ट्रिंग के अंत तक बढ़ाता है।
String str = "Jamaica";
str = str.substring(1);
जावा में समझने वाली महत्वपूर्ण बात यह है कि स्ट्रिंग्स अपरिवर्तनीय हैं - आप उन्हें बदल नहीं सकते हैं। इसलिए 'एक चरित्र को एक तार से हटाने' की बात करने का कोई मतलब नहीं है। इसके बजाय, आप केवल अपने इच्छित पात्रों के साथ एक नया स्ट्रिंग बनाते हैं। इस प्रश्न के अन्य पोस्ट आपको ऐसा करने के कई तरीके देते हैं, लेकिन यह समझना महत्वपूर्ण है कि ये किसी भी तरह से मूल स्ट्रिंग को नहीं बदलते हैं। आपके पास पुराने स्ट्रिंग के लिए कोई भी संदर्भ पुराने स्ट्रिंग को संदर्भित करता रहेगा (जब तक कि आप उन्हें किसी भिन्न स्ट्रिंग को संदर्भित करने के लिए नहीं बदलते हैं) और नए बनाए गए स्ट्रिंग से प्रभावित नहीं होंगे।
यह प्रदर्शन के लिए कई निहितार्थ हैं। हर बार जब आप एक स्ट्रिंग को 'संशोधित' कर रहे होते हैं, तो आप वास्तव में सभी ओवरहेड निहित (मेमोरी आवंटन और गारबेज संग्रह) के साथ एक नया स्ट्रिंग बना रहे होते हैं। इसलिए यदि आप एक स्ट्रिंग में संशोधनों की एक श्रृंखला बनाना चाहते हैं और केवल अंतिम परिणाम के बारे में परवाह करते हैं (जैसे ही आप उन्हें संशोधित करते हैं, तो मध्यवर्ती स्ट्रिंग्स मृत हो जाएंगे), इसके बजाय एक स्ट्रिंगबर्ल या स्ट्रिंगर का उपयोग करने के लिए अधिक समझदारी हो सकती है।
सबस्ट्रिंग () विधि एक नया स्ट्रिंग लौटाती है जिसमें एक अनुगामी होता है पात्रों में से वर्तमान में इस क्रम में निहित।
सबस्ट्रिंग निर्दिष्ट में शुरू होता है start
और कम से चरित्र तक फैलीindex end - 1
।
इसके दो रूप हैं। पहला है
String substring(int FirstIndex)
यहां, FirstIndex उस इंडेक्स को निर्दिष्ट करता है जिस पर प्रतिस्थापन शुरू होगा। यह प्रपत्र फर्स्टइंडेक्स पर शुरू होने वाले सबस्ट्रिंग की एक प्रति लौटाता है और इनवॉइसिंग स्ट्रिंग के अंत तक चलता है।
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'
मैं एक ऐसी स्थिति में आया, जहां मुझे न केवल पहले चरित्र को हटाना पड़ा (अगर यह एक था #
, बल्कि पात्रों का पहला सेट था।
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
और यह काम करता है।
एक और समाधान, आप उदाहरण के लिए replaceAll
कुछ रेगेक्स ^.{1}
( रेगेक्स डेमो ) का उपयोग करके अपनी समस्या को हल कर सकते हैं :
String str = "Jamaica";
int nbr = 1;
str = str.replaceAll("^.{" + nbr + "}", "");//Output = amaica
प्रमुख वर्णों को हटाने का मेरा संस्करण, एक या एकाधिक। उदाहरण के लिए, स्ट्रिंग 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);
}