gpt4 book ai didi

JAVA替换一个String,无需多次替换

转载 作者:行者123 更新时间:2023-12-01 15:52:42 24 4
gpt4 key购买 nike

String _p = p;      
for(int i = 0; i <= _p.length()-1; i++)
_p = _p.replace(lChar[_p.charAt(i)].getText(), tReplace[_p.charAt(i)].getText());
tOut.append(_p);

上面是我用来替换从 TextArea (tIn -> p) 中读取的字符串的代码,然后有一个标签数组 (lChar),我在其中存储每个唯一的字符(字符值是数组索引) ),我还有一个 TextField 数组(tReplace),在这里我为 lChar 中的每个字符编写替换字符串(可以是多个字符)(“旧”字符中的字符值是数组索引)。

所以现在我想用 tReplace 中的每个字符替换 lChar 中的每个字符。如果我想将字符串“12”的“1”替换为“2”,将“2”替换为“1”,我会得到“11”,因为在第一个循环中它将其更改为“22”,而在下一个循环中它将其更改为“11”。但我只想将每个字母更改一次,就像我会写

String.valueOf(21).replace("2","1").replace("1","2");

有什么想法可以做到这一点吗?

最佳答案

您可以为此任务创建一个自动机:
使用String.getChars()将字符串转换为char[],然后迭代数组,根据需要替换每个字符。
注意:如果您需要将每个字符替换为长度>1的字符串,您可以使用相同的方法,但是使用 char[],使用 StringBuilder,并且对于每个字符:如果需要替换,将替换字符串追加到 StringBuilder,否则:将 char 追加到 StringBuilder
示例代码:

String original = "1212";
HashMap<Character, String> map = new HashMap<Character, String>();
map.put('1', "22");
map.put('2', "1");
StringBuilder sb = new StringBuilder();
for (int i =0;i<original.length();i++) {
char ch = original.charAt(i);
if (map.containsKey(ch)) {
sb.append(map.get(ch));
} else {
sb.append(ch);
}
}
System.out.println(sb);

将导致:221221

关于JAVA替换一个String,无需多次替换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5693691/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com