我想知道是否有一种方法可以在java中的一行中使用replace()和多个替换。例如:
String precio_gold = "59,99$";
precio_gold = precio_gold.replace(",", ".");
precio_gold = precio_gold.replace("$", "");
如果我有一种方法可以在第一个"论证中引入更多的posibilites"替换方法,例如收取价格,并取决于它是否有$或€替换为"" (无):
precio_gold = precio_gold.replace("$" AND "€", ""); //This is wrong but I put just to see what I want to say.
答案 0 :(得分:4)
对于您的第一个问题,在一行上进行多次替换,您可以将该方法链接起来。
System.out.println(precio_gold.replace(",", ".").replace("$", ""));
对于第二个问题,您可以将replaceAll与正则表达式一起使用。
System.out.println(precio_gold.replaceAll("\\$|€", ""));
请注意$
使用\\
进行转义,因为它是正则表达式中的特殊字符。
答案 1 :(得分:2)
如果你被允许使用Apache Commons,那么这就是你正在寻找的:
StringUtils.replaceEach(String text, String[] searchList, String[] replacementList)
您可以在文档here中找到更多示例。
答案 2 :(得分:1)
这个应该适合你
precio_gold = precio_gold.replaceAll("[$€]", "");
答案 3 :(得分:1)
您可以随时尝试
precio_gold = precio_gold.replace(",", ".").replaceAll("\\$|€", "");
甚至
precio_gold = "59,99$".replace(",", ".").replaceAll("\\$|€", "");
答案 4 :(得分:0)
您想知道第一个参数中是否还有更多可能性。
我说,您可以在第一个参数中使用Ternary operator
来有条件地选择您想要更改的内容。
这是一个简短的例子:
String precio_gold = "FFF#vvty^kk^k#hhh9";
precio_gold = precio_gold.replace(precio_gold.indexOf("#") ==3 ? "#": "^", "0");
// precio_gold = precio_gold.replace("$", "");
System.out.println(precio_gold);
此代码检查"#"
是否在第3个索引处,如果仅在第3个索引处,它将被0
替换,否则^
将替换为0。
您可以在:
运算符中的ternary
之后继续添加条件。
很好的一个方法。希望它有所帮助!