2012-07-28 29 views
14

जावा स्ट्रिंग ट्रिम मेरे लिए एक व्हाइटस्पेस चरित्र नहीं हटा रहा है।जावा स्ट्रिंग ट्रिम का कोई प्रभाव नहीं है

String rank = (some method); 
System.out.println("(" + rank + ")"); 

उत्पादन (1 ) है। सूचना 1.

मैं स्ट्रिंग rank से अनुगामी अंतरिक्ष हटाने के लिए के अधिकार के लिए अंतरिक्ष लेकिन rank.trim() है और न ही rank.replace(" ","") उसे निकाल देता है न।

स्ट्रिंग rank बस वही तरीका बना हुआ है।

संपादित करें: पूर्ण कोड::

Document doc = Jsoup.connect("http://www.4icu.org/ca/").timeout(1000000).get(); 
Element table = doc.select("table").get(7); 
Elements rows = table.select("tr"); 
for (Element row: rows) { 
    String rank = row.select("span").first().text().trim(); 
    System.out.println("("+rank+")"); 
} 

मुझे लगता है कि अंतरिक्ष क्यों नहीं निकाल सकते?

+3

आप का उपयोग करें 'रैंक = rank.trim()':
आप इस कोड ट्रिम करने के लिए उपयोग कर सकते हैं? दूसरा काम नहीं करेगा। – Baz

+0

आपके द्वारा उपयोग किए गए ट्रिम() कोड प्रदान करते हैं .. –

+0

@Baz प्रश्न संपादित –

उत्तर

36

उस वेबसाइट का स्रोत कोड विशेष HTML वर्ण   दिखाता है। अपने जावा स्ट्रिंग में निम्न को खोजने या बदलने का प्रयास करें: \u00A0

यह एक गैर-ब्रेक करने योग्य स्थान है। देखें: I have a string with "\u00a0", and I need to replace it with "" str_replace fails

rank = rank.replaceAll("\u00A0", ""); 

काम करना चाहिए। शायद \ के बजाय एक डबल \\ जोड़ें।

+3

@TerryLi देखें, अगर आप पर्याप्त जानकारी प्रदान करते हैं, तो हम आपकी मदद कर सकते हैं। खुशी है कि मैं मदद कर सकता हूँ :) – Baz

+0

@Baz धन्यवाद, यह काम करता है! – dogankadriye

+0

इस उत्तर को ध्यान देने योग्य मूल्य: http://stackoverflow.com/questions/1437933/how-to-properly-trim-whitespaces-from-a-string-in-java – Quaternion

3

क्या आप स्ट्रिंग असाइन कर रहे हैं?

String rank = " blabla "; 
rank = rank.trim(); 

दूसरा असाइनमेंट न भूलें, या आपकी छंटनी वाली स्ट्रिंग कहीं भी नहीं जाएगी।

साथ ही आप एपीआई में सामान की इस तरह देख सकते हैं: http://docs.oracle.com/javase/7/docs/api/java/lang/String.html#trim()

आप देख सकते हैं इस विधि एक स्ट्रिंग, सबसे तरीकों कि एक स्ट्रिंग पर काम करते हैं देता है। वे संशोधित स्ट्रिंग को वापस करते हैं और मूल स्ट्रिंग को व्यवहार में छोड़ देते हैं।

+0

प्रश्न संपादित –

7

आपको String चर पर वापस ट्रिम का परिणाम असाइन करना चाहिए। अन्यथा यह काम नहीं करेगा, क्योंकि जावा में तार अपरिवर्तनीय हैं।

String orig = " quick brown fox "; 
String trimmed = original.trim(); 
+0

प्रश्न संपादित –

0

ट्रिम समारोह स्ट्रिंग की एक नई प्रतिलिपि देता है, अग्रणी और पिछली श्वेत रिक्ति को छोड़ा गया है।

rank = rank.trim();// This will remove and save rank without leading and trailing spaces 

परिणाम आपको देगा।

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

+0

प्रश्न संपादित –

+1

यदि आप रिक्त स्थान के बारे में निश्चित नहीं हैं तो मैं आपको संख्या निकालने के लिए रेगेक्स का उपयोग करने का सुझाव दूंगा। "((- | \\ +) का उपयोग करें? [0-9] + (\\। [0-9] +)?) +" रेगेक्स संख्या फॉर्म स्ट्रिंग निकाल देगा। –

+0

मैं आपको सलाह दूंगा। लेकिन मुझे अभी भी आश्चर्य है कि दो रिक्त स्थान क्या बताते हैं। –

0

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

String temp=rank.trim() 
int te= Integer.parseInt(temp) 
+0

आपको अस्थायी स्ट्रिंग का उपयोग करने की आवश्यकता नहीं है। आप 'रैंक = रैंक.ट्रिम();' ... – Baz

+0

प्रश्न संपादित कर सकते हैं –

3

चरित्र एक गैर-ब्रेकिंग स्पेस है, और इस प्रकार trim() विधि द्वारा इसे हटाया नहीं जाता है।पात्रों के माध्यम से Iterate और प्रत्येक के int मान मुद्रित करने के लिए, यह जानने के लिए कि आप क्या चाहते हैं पाने के लिए एक खाली स्ट्रिंग द्वारा आपको कौन सा चरित्र बदलना चाहिए।

1

मुझे एक ही समस्या थी और जावा की ट्रिम() विधि पर थोड़ा हेरफेर किया। सिर्फ `rank.trim()` या;

public static String trimAdvanced(String value) { 

     Objects.requireNonNull(value); 

     int strLength = value.length(); 
     int len = value.length(); 
     int st = 0; 
     char[] val = value.toCharArray(); 

     if (strLength == 0) { 
      return ""; 
     } 

     while ((st < len) && (val[st] <= ' ') || (val[st] == '\u00A0')) { 
      st++; 
      if (st == strLength) { 
       break; 
      } 
     } 
     while ((st < len) && (val[len - 1] <= ' ') || (val[len - 1] == '\u00A0')) { 
      len--; 
      if (len == 0) { 
       break; 
      } 
     } 


     return (st > len) ? "" : ((st > 0) || (len < strLength)) ? value.substring(st, len) : value; 
    }