我正在尝试创建一个函数,将字符串内部的子字符串替换为这两个数组中包含的其他子字符串。
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/