Java 中的子字符串替换
Substring substitution in Java
我正在尝试创建一个函数,将字符串中的子字符串替换为这两个数组中包含的其他子字符串。
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>
As "key" 使用数组 A 中的值;相应的 "value" 来自数组 B。(或者正如其他人所指出的:一个 LinkedHashMap 以防顺序相关)
然后遍历hashmap;并使用 replaceAll
将所有出现的 hashmap.key 替换为 hashmap.value。 ( http://www.tutorialspoint.com/java/java_string_replaceall.htm )
通过这样做,您可以接受诸如 adding/removing 替换规则之类的更改。
使用映射(相对于使用两个数组)的另一个优势是,模式和替换是 "more strongly coupled"。当使用两个数组时,总是存在一定的风险,即由于某些愚蠢的原因,数组在某些时候以不同的长度结束。当然,只有在运行时才可见。但是当你总是成对地指定你的规则时......那么你不能用比替换更多的模式。
使用 hashmap 也可以很容易地 更改 pattern/replacement 规则(只需提供具有其他条目的不同映射)。
我正在尝试创建一个函数,将字符串中的子字符串替换为这两个数组中包含的其他子字符串。
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>
As "key" 使用数组 A 中的值;相应的 "value" 来自数组 B。(或者正如其他人所指出的:一个 LinkedHashMap 以防顺序相关)
然后遍历hashmap;并使用 replaceAll
将所有出现的 hashmap.key 替换为 hashmap.value。 ( http://www.tutorialspoint.com/java/java_string_replaceall.htm )
通过这样做,您可以接受诸如 adding/removing 替换规则之类的更改。
使用映射(相对于使用两个数组)的另一个优势是,模式和替换是 "more strongly coupled"。当使用两个数组时,总是存在一定的风险,即由于某些愚蠢的原因,数组在某些时候以不同的长度结束。当然,只有在运行时才可见。但是当你总是成对地指定你的规则时......那么你不能用比替换更多的模式。
使用 hashmap 也可以很容易地 更改 pattern/replacement 规则(只需提供具有其他条目的不同映射)。