2011-03-25 8 views
27

में एक स्ट्रिंग (यूआरएल प्रकार से बदला गया) से एक पिछला स्लैश निकालें, मैं जावा में एक स्ट्रिंग से पीछे की स्लैश को हटाना चाहता हूं।जावा

मैं यह जांचना चाहता हूं कि स्ट्रिंग यूआरएल के साथ समाप्त होती है, और यदि ऐसा होता है, तो मैं इसे हटाना चाहता हूं।

String s = "http://almaden.ibm.com/"; 

s= s.replaceAll("/",""); 

और इस:

String s = "http://almaden.ibm.com/"; 
length = s.length(); 
--length; 
Char buff = s.charAt((length); 
if(buff == '/') 
{ 
    LOGGER.info("ends with trailing slash"); 
/*how to remove?*/ 
} 
else LOGGER.info("Doesnt end with trailing slash"); 

लेकिन न तो काम

यहाँ मैं क्या है।

उत्तर

61

पास दो विकल्प होते हैं:

s = s.replaceAll("/$", ""); 

या: पैटर्न मिलान (थोड़ा धीमे) का उपयोग कर

s = s.replaceAll("/\\z", ""); 

और एक अगर बयान (थोड़ा तेज) का उपयोग:

if (s.endsWith("/")) { 
    s = s.substring(0, s.length() - 1); 
} 

या (थोड़ा बदसूरत):

s = s.substring(0, s.length() - (s.endsWith("/") ? 1 : 0)); 

कृपया ध्यान दें कि आपको s = s... का उपयोग करने की आवश्यकता है, क्योंकि स्ट्रिंग्स अपरिवर्तनीय हैं।

+0

प्रतिक्रिया के लिए धन्यवाद, क्या मुझे पता है कि मैं एक वैरिएबल प्रकार यूआरएल पर एक ही ऑपरेशन कर सकता हूं, क्योंकि मैं इसे अंतिम रूप में घोषित करना चाहता हूं। प्रतिस्थापन सभी प्रकार के यूआरएल पर काम नहीं कर रहा है, फिर से जवाबों के लिए धन्यवाद, मैं जावा में शुरुआत कर रहा हूं! –

+1

'java.net.URL' को' toString() 'का उपयोग करके 'java.lang.String' में परिवर्तित किया जा सकता है। –

+0

धीमी, तेज़ और बदसूरत ... धन्यवाद आदमी! –

3

url.replaceAll("/$", "")$ एक स्ट्रिंग के अंत से मेल खाता है, इसलिए यह मौजूद होने पर पिछली स्लैश को प्रतिस्थापित करता है।

+0

धन्यवाद, मुझे पता कर सकते हैं अगर मैं एक चर प्रकार यूआरएल पर एक ही आपरेशन प्रदर्शन कर सकता है, जैसा कि मैंने अंतिम के रूप में यह घोषणा करने के लिए चाहते हैं । प्रतिस्थापन सभी प्रकार के यूआरएल पर काम नहीं कर रहा है, फिर से जवाबों के लिए धन्यवाद, मैं जावा में शुरुआत कर रहा हूं! –

2

जैसा कि इसका नाम इंगित करता है, प्रतिस्थापन सभी विधि प्रतिस्थापन स्ट्रिंग के साथ खोजी गई स्ट्रिंग की सभी घटनाओं को प्रतिस्थापित करती है। यह स्पष्ट रूप से नहीं है कि आप क्या चाहते हैं। the javadoc पढ़कर आप इसे स्वयं पा सकते थे।

दूसरा दूसरा सत्य से करीब है। स्ट्रिंग क्लास के जावाडोक को पढ़कर, आपको एक उपयोगी विधि मिल जाएगी जिसे सबस्ट्रिंग कहा जाता है, जो दो इंडेक्स दिए गए स्ट्रिंग से एक सबस्ट्रिंग निकालता है।

3

आप अपाचे कॉमन्स लैंग के एक उपयोगकर्ता आप chompStringUtils

स्ट्रिंग रों में स्थित विधि का लाभ ले सकते हैं कर रहे हैं = "http://almaden.ibm.com/ ";

StringUtils.chomp (रों, File.separatorChar + "")

+0

'निकालें' के पक्ष में दो-तर्क विधि को बहिष्कृत किया गया है: https://commons.apache.org/proper/commons-lang/apidocs/org/apache/commons/lang3/StringUtils.html#removeEnd-java.lang। स्ट्रिंग-java.lang.String- – berezovskyi

9

यह बेहतर काम करना चाहिए:

url.replaceFirst("/*$", "") 
6

जावा में सरल विधि

String removeLastSlash(String url) { 
    if(url.endsWith("/")) { 
     return url.substring(0, url.lastIndexOf("/")); 
    } else { 
     return url; 
    } 
} 
+0

अच्छा जवाब, हालांकि आपको अन्य कथन की आवश्यकता नहीं है। –

0
if (null != str && str.length > 0) 
    { 
     int endIndex = str.lastIndexOf("/"); 
     if (endIndex != -1) 
     { 
      String newstr = str.subString(0, endIndex); // not forgot to put check if(endIndex != -1) 
     } 
    } 
-1

सबसे आसान तरीका ...

String yourRequiredString = myString.subString(0,myString.lastIndexOf("/")); 
1

एक अधिक कॉम्पैक्ट रास्ता:

स्ट्रिंग pathExample = "/ परीक्षण/dir1/dir2 /";

स्ट्रिंग trimmedSlash = pathExample.replaceAll ("^/|/$", "");

regexp ^/की जगह पहले,/$ की जगह प्रतिक्रिया के लिए पिछले