在一行中使用replace()替换很多东西

时间:2017-01-12 10:38:44

标签: java

我想知道是否有一种方法可以在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.

5 个答案:

答案 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之后继续添加条件。

很好的一个方法。希望它有所帮助!