我需要在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?。
答案 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"