java中String中字符替换的最佳方法

时间:2013-04-25 21:15:26

标签: java string replace

我想检查每个字符的字符串,我用其他字符替换它或将其保存在字符串中。而且因为它是一个很长的字符串,所以完成这项任务的时间非常重要。什么是最好的方式,或任何更好的主意? 对于所有这些我将结果附加到StringBuilder。 使用for和charAt命令检查所有字符。 像以前一样使用开关。 使用replaceAll两次。

并且如果第一个方法中的一个更好是有任何方法来检查具有一组字符的字符,例如: if(st.charAt(i)=='a'..'z')....

编辑: 请告诉消耗时间较少的消费并告诉原因。我知道您说的所有这些方式!

5 个答案:

答案 0 :(得分:1)

检查documentation并找到一些好的方法:

char from = 'a';
char to = 'b';
str = str.replace(from, to);

答案 1 :(得分:1)

String replaceSample = "This String replace Example shows 
how to replace one char from String";
String newString = replaceSample.replace('r', 't');

输出:此Stting teplace示例显示如何替换一个聊天对象

另外,您可以使用contains:

 str1.toLowerCase().contains(str2.toLowerCase())

检查子串str2是否存在于str1

编辑。

只需读取字符串来自文件。您可以使用正则表达式。那将是最好的方法。

http://docs.oracle.com/javase/tutorial/essential/regex/literals.html

答案 2 :(得分:1)

这是你的评论:

  

我想将所有大写字母替换为小写字母并替换所有大写字母   除了带空格的a-z之外的字符。

你可以这样做:

str = str.toLowerCase().replaceAll("[^a-z]", " ");

您的要求应该是问题的一部分,而不是在发布的答案下的评论#7中......

答案 3 :(得分:1)

如果您想要替换单个字符(或单个序列),请使用replace(),如其他答案所示。

如果您想用一个替换字符或字符序列(例如“X”)替换多个字符(例如'a''b''c'),您应该使用正则表达式替换:

String result = original.replaceAll("[abc]", "X");

如果您想要替换多个字符,每个字符都有不同的替换字符(例如,'a'带有'A''b'带有'B'),那么请自行循环遍历字符串并在StringBuilder中构建结果可能是最有效的。这是因为,正如您在问题中指出的那样,您将只通过字符串一次。

String sb = new StringBuilder();
String targets = "abc";
String replacements = "ABC";
for (int i = 0; i < result.length; ++i) {
    char c = original.charAt(i);
    int loc = targets.indexOf(c);
    sb.append(loc >= 0 ? replacements.charAt(loc) : c);
}
String result = sb.toString();

答案 4 :(得分:0)

您应该查看regex的Java。您可以匹配整个字符集。字符串有几个功能:replacereplaceAllmatch,您可能会在这里找到它们。

例如,您可以使用[a-zA-Z]来匹配字母数字集,这可能是您正在寻找的。