2012-01-13 17 views
43

मैंने वेबसाइट सेवा से लॉग इन टोकन प्राप्त करने के लिए SOAP संदेश में काम किया है, और प्रिंटिंग में लॉग इन टोकन स्टोर किया है और प्रिंट करने के लिए System.out.println(LoginToken); का उपयोग किया है। यह प्रिंट [wdsd34svdf] है, लेकिन मुझे केवल wdsd34svdf चाहिए, तो स्क्वायर ब्रैकेट को कैसे हटाएं। कृपया कोई मेरी मदद करो।स्ट्रिंग के पहले और अंतिम अक्षर को कैसे हटाएं?

धन्यवाद

उदाहरण:

String LoginToken=getName().toString(); 
System.out.println("LoginToken" + LoginToken); 

आउटपुट: [wdsd34svdf] मैं wdsd34svdf

+5

यह सवाल बिल्कुल कोई अनुसंधान प्रयास –

+2

यह सही है, लेकिन अब एक और कॉपी-पेस्ट जवाब वहाँ से पता चलता आलसी प्रोग्रामर जो इस तरह की चीजों के लिए Google से पूछते हैं :) – tom

उत्तर

110

यह आसान है, आप की जरूरत है इंडेक्स को खोजने के लिए [ए डी] तो सबस्ट्रिंग। (यहाँ [शुरू में हमेशा होता है और] अंत में है),

String loginToken="[wdsd34svdf]"; 
System.out.println(loginToken.substring(1, loginToken.length()-1)); 
+0

आपको बहुत धन्यवाद –

+0

मुझे यह पसंद है कि आप अपनी वाक्य शुरू करें: "यह आसान" ... :) मुझे लगता है कि जब आप इसे जानते हैं तो सबकुछ आसान होता है .. हालांकि मेरी मदद की –

+6

यह अंत ब्रैकेट को हटाने के लिए loginToken.length() - 2 होना चाहिए। – mga911

11

चाहते तुम हमेशा उपयोग कर सकते हैं substring:

String loginToken = getName().toString(); 
loginToken = loginToken.substring(1, loginToken.length() - 1); 
3

मैं एक ऐसी ही परिदृश्य था, और मैंने सोचा कि कुछ

तरह
str.replaceAll("\[|\]", ""); 

क्लीनर देखा। बेशक, यदि आपके टोकन में ब्रैकेट हो सकते हैं, तो यह काम नहीं करेगा।

+1

कृपया ध्यान दें कि केवल replaceAll() और replaceFirst() regex का समर्थन करता है, इसलिए str.replaceAll ("\\\ [| \\\]", ""); – rekinyz

+0

@ user1146450 निश्चित रूप से काम करेगा, क्षमा करें! – V9801

+1

सही अभिव्यक्ति str = str.replaceAll की तरह कुछ है ("\\ [| \\]", ""); अपनी अभिव्यक्ति में अनुपलब्ध \\ देखें – Raj

7

इस समस्या का एक अन्य समाधान कॉमन्स-लैंग (संस्करण 2.0 के बाद से) StringUtils.substringBetween(String str, String open, String close) विधि का उपयोग करता है। मुख्य लाभ यह है कि यह शून्य सुरक्षित संचालन है।

StringUtils.substringBetween("[wdsd34svdf]", "[", "]"); // returns wdsd34svdf

+2

यह उस विशिष्ट परिदृश्य के लिए काम करेगा, लेकिन "wdsd" वापस लौटाएगा यदि "[wdsd] 34svdf]" पहले पैरामीटर के रूप में पारित किया गया था। – izilotti

10

यह सामान्य समाधान है:

str.replaceAll("^.|.$", "") 
0

इस तरह आप अग्रणी 1 निकाल सकते हैं "[" और 1 लगने वाला "]" चरित्र। अपने स्ट्रिंग के साथ शुरू "[" या के साथ समाप्त "]" नहीं हैं तो यह कुछ भी नहीं निकाला जाएगा:

str.replaceAll("^\\[|\\]$", "") 
+0

क्या आपने इसका परीक्षण किया है? मैं गलत हो सकता हूं, लेकिन ऐसा लगता है कि "स्ट्रिंग की शुरुआत, फिर या तो [या] स्ट्रिंग के अंत"। क्या हमें यहां ब्रैकेट की आवश्यकता नहीं है? – YakovL

+1

हाँ, यह बिल्कुल ठीक काम करता है: \t @Test \t सार्वजनिक शून्य testReplace() { \t \t स्ट्रिंग str = "[wdsd34svdf]"; \t \t str = str.replaceAll ("^ \\ [| \\] $", ""); \t \t assertTrue (str.equals ("wdsd34svdf")); \t} –

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