繁体   English   中英

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

[英]the best way for character replacement in String in java

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

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

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

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

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

输出:此Stting teplace示例显示了如何在Stting中放置一个聊天对象

此外,您可以使用包含:

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

检查子串str2是否存在于str1中

编辑。

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

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

这是你的评论:

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

你可以这样做:

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

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

如果要替换单个字符(或单个序列),请使用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();

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM