Efficient way to replace chars in a string (java)?(替换字符串中的字符的有效方法(java)?)
问题描述
我正在编写一个小的 JAVA 程序:
I'm writing a small JAVA program which:
- 将文本作为字符串
- 需要 2 个字符数组
我尝试做的事情听起来像是查找和替换",但它不一样,所以我认为清除它很重要.
What im trying to do will sound like "find and replace" but it is not the same so i thought its important to clear it.
无论如何,我想获取此文本,查找第一个数组中的任何字符是否与文本中的字符匹配,如果是,则将其替换为第二个字符数组中的匹配字符(根据索引).
Anyway I want to take this text, find if any char from the first array match a char in the text and if so, replace it with the matching char (according to index) from the second char array.
我会用一个例子来解释:假设我的文本(字符串)是:java 很棒!";我有 2 个数组(char[]):absm"和!@*$".
I'll explain with an example: lets say my text (String) is: "java is awesome!"; i have 2 arrays (char[]): "absm" and "!@*$".
希望的结果是将 'a' 更改为 '!', 'b' 到 '@' 等等..意味着结果文本将是:
The wished result is to change 'a' to '!' , 'b' to '@' and so on.. meaning the resulted text will be:
java 太棒了!"改为 -> "j i* @w*o$e!"
最有效的方法是什么?为什么?我想过循环文本,但后来发现效率不高.
What is the most efficient way of doing this and why? I thought about looping the text, but then i found it not so efficient.
(StringBuilder/可以使用String类)
(StringBuilder/String class can be used)
推荐答案
StringBuilder sb = new StringBuilder(text);
for(int i = 0; i<text.length(); i ++)
{
for (int j = 0; j < firstCharArray.length;j++)
{
if (sb.charAt(i) == firstCharArray[j])
{
sb.setCharAt(i, secondCharArray[j]);
break;
}
}
}
这种方式很有效,因为它使用 StringBuilder 来更改字符(如果您使用字符串,则每次都必须创建新的,因为它们是不可变的.)而且它还最大限度地减少了您必须执行的传递次数(1 传递文本字符串,n 传递第一个数组,其中 n = text.length())
This way is efficient because it uses a StringBuilder to change the characters in place (if you used Strings you would have to create new ones each time because they are immutable.) Also it minimizes the amount of passes you have to do (1 pass through the text string and n passes through the first array where n = text.length())
这篇关于替换字符串中的字符的有效方法(java)?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:替换字符串中的字符的有效方法(java)?


基础教程推荐
- 如何强制对超级方法进行多态调用? 2022-01-01
- Spring Boot Freemarker从2.2.0升级失败 2022-01-01
- 由于对所需库 rt.jar 的限制,对类的访问限制? 2022-01-01
- 在螺旋中写一个字符串 2022-01-01
- 如何使用 Eclipse 检查调试符号状态? 2022-01-01
- Java 中保存最后 N 个元素的大小受限队列 2022-01-01
- 首次使用 Hadoop,MapReduce Job 不运行 Reduce Phase 2022-01-01
- 如何对 HashSet 进行排序? 2022-01-01
- 如何使用 Stream 在集合中拆分奇数和偶数以及两者的总和 2022-01-01
- 如何在不安装整个 WTP 包的情况下将 Tomcat 8 添加到 Eclipse Kepler 2022-01-01