1

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

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

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

4

5 回答 5

1

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

char from = 'a';
char to = 'b';
str = str.replace(from, to);
于 2013-04-25T21:18:11.863 回答
1
String replaceSample = "This String replace Example shows 
how to replace one char from String";
String newString = replaceSample.replace('r', 't');

输出:这个 Stting teplace Example 展示了如何在 Stting 中放置一个聊天

此外,您可以使用包含:

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

检查 str1 中是否存在子字符串 str2

编辑。

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

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

于 2013-04-25T21:18:39.740 回答
1

这是你的评论:

我想将所有大写字母替换为小写字母,并将除 az 之外的所有字符替换为空格。

你可以这样做:

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

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

于 2013-04-25T21:36:50.170 回答
1

如果要替换单个字符(或单个序列),请使用replace(),正如其他答案所建议的那样。

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

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

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

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();
于 2013-04-25T21:46:04.543 回答
0

您应该研究Java 的正则表达式。您可以匹配整个字符集。字符串有几个函数:replacereplaceAllmatch,您可能会在这里发现它们很有用。

您可以匹配一组字母数字,例如 using [a-zA-Z],这可能就是您要查找的内容。

于 2013-04-25T21:20:29.390 回答