java - Java 中的子字符串替换

标签 java arrays regex substring

我正在尝试创建一个函数,将字符串内部的子字符串替换为这两个数组中包含的其他子字符串。

String[] A = {"kk", "pp", "tt", "k", "p", "t", "rt", "lt", "nt", "nk", "mp"};
String[] B = {"k",  "p",  "t",  "",  "v", "d", "rr", "ll", "nn", "ng", "mm"};

这个想法是,如果我有一个仅包含数组“A”之一的字符串,则用“B”中的等效项(在索引中)替换。

我尝试使用 StringBuilder 的 indexOf 但不起作用。我也尝试过一些模式,但我对正则表达式不太熟悉。您执行此操作的最佳方法是什么?

一个例子;

String s = "auttaa";
myfunction(s);

现在s =“autaa”

最佳答案

一个选项:使用

HashMap<String, String>

作为“key”,使用数组 A 中的值;相应的“值”来自数组 B。(或者正如其他人指出的:如果顺序相关,则为 LinkedHashMap)

然后迭代 HashMap ;并使用 replaceAll 将所有出现的 hashmap.key 替换为 hashmap.value。 (http://www.tutorialspoint.com/java/java_string_replaceall.htm)

通过这样做,您可以接受更改,例如添加/删除替换规则。

使用映射(相对于使用两个数组)的另一个优点是,模式和替换“耦合性更强”。当使用两个数组时,总是存在一定的风险,即由于某些愚蠢的原因,数组在某些时候最终会具有不同的长度。当然,只有在运行时才可见。但是,当您总是成对指定规则时……那么您就无法使用比替换更多的模式。

使用 HashMap 还可以非常轻松地更改模式/替换规则(只需提供具有其他条目的不同映射)。

关于java - Java 中的子字符串替换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29298526/

相关文章:

javascript - 迭代嵌套对象并使用 Lodash 连接到字符串

java - 参数化测试因 mvn 测试而失败

Java-Selenium : Eclipse is unable to find my file, 但我的文件位于其工作目录中

javascript - 过滤唯一的数组值和总和值

javascript - 来自嵌套数组的主干集合

c# - 需要正则表达式(使用 C#)将所有空格压缩为单个空格

java - RabbitMQ Java 客户端到 Windows 服务总线

Java时间戳字符串解析

python - Django URL 正则表达式与 GET 正确匹配但与 POST 不匹配

javascript - RegEx如何修改为只接受1-9之间的1位数字JavaScript