替换字符串ln java中的多个单词,如php str_replace

时间:2014-01-13 12:55:51

标签: java php regex string

我需要在java中找到一个类似的光滑方式来做多字符串替换,就像在php中使用str_replace一样。

我想取一个字符串然后返回一个数字1到10的字符串替换为这些数字的单词。

“我赢了10场比赛中的7场并获得了30美元。” => “我赢了十场比赛中的七场并获得了30美元。”

在php中,你可以这样做:

function replaceNumbersWithWords($phrase) { 

  $numbers = array("1", "2", "3","4","5","6","7","8","9","10");
  $words   = array("one", "two", "three","four","five","six","seven","eight","nine","ten");
  return str_replace($numbers,$words,$phrase);

}

我不确定是否有一种优雅的方法可以在String.replace()的特定情况下使用正则表达式,我不想使用我认为是蛮力方法来执行此操作:就像这里: How to replace multiple words in a single string in Java?

2 个答案:

答案 0 :(得分:3)

也许你可以这样替换:

    Map<String, String> replaceMap = new HashMap<String, String>();
    replaceMap.put("1","one");
    replaceMap.put("2","two");
    replaceMap.put("3","three");
    replaceMap.put("4","four");
    String str = "aaa1ss2";
    for (Map.Entry<String, String> entry : replaceMap.entrySet()) {
        str = str.replaceAll(entry.getKey(), entry.getValue());
    }

答案 1 :(得分:3)

您可以使用StringUtils中的replaceEach()执行此操作:

http://commons.apache.org/proper/commons-lang/javadocs/api-2.6/org/apache/commons/lang/StringUtils.html#replaceEach(java.lang.String,java.lang.String [],java.lang.String [])

StringUtils.replaceEach("abcde", new String[]{"ab", "d"}, new String[]{"w", "t"})  = "wcte"