2014-04-17 131 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