Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/372.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java中字符串中字符替换的最佳方法_Java_String_Replace - Fatal编程技术网

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

java中字符串中字符替换的最佳方法,java,string,replace,Java,String,Replace,我想为每个字符检查一个字符串,我用其他字符替换它或将其保留在字符串中。而且因为这是一个很长的字符串,所以完成这项任务的时间非常重要。最好的方法是什么,或者更好的主意是什么? 对于所有这些,我将结果附加到StringBuilder。 使用for和charAt命令检查所有字符。 像前面的方法一样使用开关。 全部使用两次 如果第一种方法更好,有没有办法用一组字符检查一个字符,如: 如果(圣查拉特(i)='a'..'z') 编辑: 请用最省时的方式告诉我原因,我知道你说的所有这些方式 检查并找到一些好方

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

如果第一种方法更好,有没有办法用一组字符检查一个字符,如: 如果(圣查拉特(i)='a'..'z')

编辑: 请用最省时的方式告诉我原因,我知道你说的所有这些方式

检查并找到一些好方法:

char from = 'a';
char to = 'b';
str = str.replace(from, to);
检查并找到一些好方法:

char from = 'a';
char to = 'b';
str = str.replace(from, to);
输出:此Stting teplace示例显示如何在Stting中放置一个聊天室

此外,您还可以使用包含:

 str1.toLowerCase().contains(str2.toLowerCase())
检查str1中是否存在子字符串str2

编辑

只需读取来自文件的字符串。您可以使用Regex进行此操作。那将是最好的方法

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

此外,您还可以使用包含:

 str1.toLowerCase().contains(str2.toLowerCase())
检查str1中是否存在子字符串str2

编辑

只需读取来自文件的字符串。您可以使用Regex进行此操作。那将是最好的方法

您应该研究Java。您可以匹配整个字符集。字符串有几个函数:
replace
replaceAll
match
,您可以在这里找到这些函数

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

您应该查找Java。您可以匹配整个字符集。字符串有几个函数:
replace
replaceAll
match
,您可以在这里找到这些函数

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

这是您的注释:

我想把所有的大写字母换成小写字母,然后把所有的 除带空格的a-z以外的字符的

您可以这样做:

str = str.toLowerCase().replaceAll("[^a-z]", " ");
你的要求应该是问题的一部分,而不是在贴出的答案下的评论7中…

这是你的评论:

我想把所有的大写字母换成小写字母,然后把所有的 除带空格的a-z以外的字符的

您可以这样做:

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();
String sb=new StringBuilder();
字符串targets=“abc”;
字符串替换=“ABC”;
对于(int i=0;i=0?替换字符(loc):c);
}
字符串结果=sb.toString();

如果要替换单个字符(或单个序列),请按照其他答案的建议使用
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();
String sb=new StringBuilder();
字符串targets=“abc”;
字符串替换=“ABC”;
对于(int i=0;i=0?替换字符(loc):c);
}
字符串结果=sb.toString();


EDIT:title=~s/replacement/replacement/=)这是您的程序的全部功能,还是只是其中的一部分?在Unix中,您只需使用
tr
命令即可。这只是一部分,时间非常重要,因为字符串太大。此字符串是否在文件中?是的。我一部分一部分地阅读它,替换不需要的字符,做一些其他的事情,然后把它准备成一本字典。编辑:title=~s/replacement/replacement/=)这是你的程序所做的全部,还是只是它的一部分?在Unix中,您只需使用
tr
命令即可。这只是一部分,时间非常重要,因为字符串太大。此字符串是否在文件中?是的。我一部分一部分地读,替换不需要的字符,做一些其他的事情,把它准备成一本字典。我知道所有的方法,但寻找最好的!好的,这是最好的。0:)比逐字符测量字符串要好?为什么?因为如果你有一个API,并且你为此做了,使用它总比自己创建一个新方法好。不要做已经做过的东西。如果是t做的呢