2014-04-17 128 views
0

我爬行一個網站,並從中獲得一些價格。我用它的貨幣得到一個價格(21,00   TL)我應該刪除貨幣(TL)和左邊的空格,以便將double轉換爲字符串。總之我應該得到21.00。 Whatevery我做了,我無法刪除該空白。Java刪除字符串上的空格

我從履帶有:

<b>21,00&nbsp;TL</b> 

我嘗試什麼:

price_lower_str = price_lower_str.replace("&nbsp;TL",""); 

and 

price_lower_str = price_lower_str.replace(" TL",""); 

price_lower_str = price_lower_str.replace("TL",""); 
price_lower_str = price_lower_trim(); 

但我不能只得到21.00。誰能幫我?

感謝

+1

trim()? price.trim()將刪除最後一個空格。 – arghtype

+0

price_lower_str = price_lower_trim();我已經做到了。 –

+0

o,它是java語法,我沒有明白。 – arghtype

回答

1

快速和骯髒的,但:-)

public static void main(String[] args) { 
    String str = "<b>21,00&nbsp;TL</b>"; 
    Matcher matcher = Pattern.compile(".*?([\\d]+,[\\d]+).*").matcher(str); 
    if (matcher.matches()) System.out.println(matcher.group(1).replace(',', '.')); 
} 

輸出工作:

21.00 
+0

這不能刪除由OP輸入指定的 。 – FrobberOfBits

+0

它不會失敗,因爲它僅匹配數字,逗號和數字。永遠不要少,它是醜陋的。你很容易證明它是正確的? – Harmlezz

+0

我認爲你的代碼有一個小錯誤,可能是複製粘貼錯誤。否則,它似乎會給出正確的請求輸出。 –

1

你只是使用了錯誤的正則表達式。試試這個:

price_lower_str.replaceAll("(\\&nbsp;|\\s)+TL", "") 

首先,我正在使用replaceAll,而不是僅僅按照原樣進行替換。其次,注意parens--我正在取代EITHER & nbsp; OR \ s匹配任何空格字符。最後,我通過反斜槓在& nbsp;當反斜槓本身是正則表達式中的元字符時轉義反斜槓是一種痛苦,但歡迎來到java正則表達式。

+0

感謝你的回覆,但不工作 –

+1

我在你的輸入字符串上測試了這個21,00   TL,它確實有效。您需要提供您正在使用的輸入,它不起作用。你有什麼,你有什麼期望? – FrobberOfBits

1

使用正則表達式重音爲這個簡單的處理。在這種情況下效率並不高。你可以做的是找到>從< b>標籤,並做一個子串達到amperstand。 System.out.println(test.substring(test.indexOf(「>」)+ 1,test.indexOf(「&」)));

你會得到你的答案21,00