我编辑了两个字符串,可以将它们转换为字符映射。我试图通过最好的方式来思考这两个字符串的映射和替换。例如:我有一个单词,我根据用户输入附加到字母表的前面。在这个例子中cat(catdefghijkl ..)。然后我根据我的新字母表取一个句子并替换它中的字符。 (现在a将是c,b将是a,c将是t)。我不是在寻找代码,而只是输入完成此任务的最佳方法。你可以将两个字符串或字符映射一起映射,然后根据这些映射进行替换吗?
答案 0 :(得分:0)
您可以使用Map<Character, Character>
。
键可以是常规字母,值可以是新字母。
Map<Character, Character> newAlphabet = new HashMap<>();
List<Character> regularAlphabet = Arrays.asList('a', 'b', 'c');//put complete alphabet here
public void updateAlphabet(List<Character> newLetters) {
assert (newLetters.size() == 26);//or 52 for uppercase
AtomicInteger i = new AtomicInteger(0);
newAlphabet.clear();
regularAlphabet.stream()
.forEach(letter -> newAlphabet.put(letter, newLetters.get(i.getAndIncrement())));
}
public String replaceString(String s) {
StringBuilder sb = new StringBuilder();
s.chars().forEach(c -> sb.append(newAlphabet.get((char) c)));
return sb.toString();
}
请注意,此代码不是线程安全的。它仅用于测试使用Map将常规字母映射到解码字母表的想法。
我可以使用hashmap映射我的两个字母字符串吗?
如果目标是用替换字符串替换整个String,那么这也是可能的。为此,您将使用Map<String, String>
来存储映射。然后,您可以使用String的replaceAll
方法查找初始String并将其替换为新的String。
//the key represents a String that would need to be replaced with the value String
Map<String, String> stringMapping = new HashMap<>();
public String replaceString(String s) {
for (Map.Entry<String, String> entry : stringMapping.entrySet()) {
s = s.replace(entry.getKey(), entry.getValue());
}
return s;
}