2

java中是否有任何等效的字符串函数或库,其行为方式与oracle translate函数的行为方式相同?

在 oracle 中,我可以这样做:

select translate(
 '23423k!(dfgd){sdf};',
 '(){}k!',
 '{}()'
 ) from dual;

得到这个:

23423{dfgd}(sdf);

但是在java中,如果我这样做:

    String a="23423k!(dfgd){sdf};";
    String b=a
        .replace("(", "{")
        .replace(")", "}")
        .replace("{", "(")
        .replace("}", ")")
        .replace("!", "")
        .replace("k", "")
        ;
    System.out.println("ori:"+a);
    System.out.println("mod:"+b);

我明白了:

ori:23423k!(dfgd){sdf}; 
mod:23423(dfgd)(sdf);
4

3 回答 3

3

Apache commons-Lang 库StringUtils.replaceChars()实用方法,可以做到这一点。

的 java 说:

一次性替换字符串中的多个字符。此方法也可用于删除字符。搜索字符的长度通常应等于替换字符的长度。如果搜索字符较长,则删除多余的搜索字符。

于 2012-11-16T02:34:40.560 回答
0
String a="23423k!(dfgd){sdf};";
    String b=a
        .replace("(d", "{d")
        .replace("d)", "d}")
        .replace("{s", "(s")
        .replace("f}", "f)")
        .replace("!", "")
        .replace("k", "")
        ;

这行得通,但这不是正确的方法。查看使用 String.replace() 或 StringBuffer 类。

于 2012-11-16T02:27:46.037 回答
0

我会构建一个正则表达式来匹配字符串并捕获感兴趣的子字符串,然后使用字符串连接将正确的样板添加回

于 2012-11-16T02:30:27.543 回答