I would like to know if there is an equivalent to tr/// (as used in Perl) in Java. For example, if I wanted to replace all "s"s with "p"s in "mississippi" and vice versa, I could, in Perl, write
#shebang and pragmas snipped...
my $str = "mississippi";
$str =~ tr/sp/ps/; # $str = "mippippissi"
print $str;
The only way I can think of to do it in Java is to use a dummy character with the String.replace() method, i.e.
String str = "mississippi";
str = str.replace('s', '#'); // # is just a dummy character to make sure
// any original 's' doesn't get switched to a 'p'
// and back to an 's' with the next line of code
// str = "mi##i##ippi"
str = str.replace('p', 's'); // str = "mi##i##issi"
str = str.replace('#', 'p'); // str = "mippippissi"
System.out.println(str);
Is there a better way to do this?
Thanks in advance.
解决方案
Commons' replaceChars may be your best bet. AFAIK there's no replacement (ar ar) in the JDK.
博客探讨在Java中实现Perl里tr///功能的方法,即替换字符串中字符。给出用String.replace()结合虚拟字符的做法,还提到Commons的replaceChars可能是更好选择,且JDK中暂无对应替代方法。
15

被折叠的 条评论
为什么被折叠?



