Java - 使用数组值的 replace() 方法正在更改数组值?
Java - replace() method using values from arrays is changing the array values?
我正在做类似
的事情
public static String[] list = {"a","b","c","d",} //It gives me a NullPointeException if I didn't use static
public String encrypt(String a){
a = a.replace(list[0],list[2]);
a = a.replace(list[4],list[3]);
return a;
}
我还有另一种方法可以逆转它
public String decrypt(String a){
a = a.replace(list[2],list[0]);
a = a.replace(list[3],list[4]);
return a;
}
当然这是简化的,我使用的真实代码使用了整个字母表和一些数字。所以这是我的问题:如果我将 123
之类的内容输入 encrypt()
并输出 ngV
然后我将 ngV
输入 decrypt() 它会给我 1q3
.只有一些字母被正确切换,而有些则没有。使用数组值的 replace()
方法有什么我遗漏的吗?我显然是 Java 的新手。
我也读了 但 replaceAll()
没有成功。
我怀疑你的问题是 "why is chaining .replace
acting oddly" 并且数组没有改变。你可以很容易地证明 replace 不会改变数组:
System.out.println(Arrays.toString(list));
encrypt("abc");
System.out.println(Arrays.toString(list));
那么你的代码是怎么回事?每次替换一个字母时,您都会得到一个新字符串,然后再次替换字母。我没有你的完整源代码,所以我会用一个真正简单的版本来展示:
a = a.replace("a", "b");
a = a.replace("b", "c");
a = a.replace("c", "d");
因为 "abc" 是.... 'ddd'.
这个问题的答案是一次查看每个字母并进行更改。遍历字符串并创建一个新字符串。
我正在做类似
的事情public static String[] list = {"a","b","c","d",} //It gives me a NullPointeException if I didn't use static
public String encrypt(String a){
a = a.replace(list[0],list[2]);
a = a.replace(list[4],list[3]);
return a;
}
我还有另一种方法可以逆转它
public String decrypt(String a){
a = a.replace(list[2],list[0]);
a = a.replace(list[3],list[4]);
return a;
}
当然这是简化的,我使用的真实代码使用了整个字母表和一些数字。所以这是我的问题:如果我将 123
之类的内容输入 encrypt()
并输出 ngV
然后我将 ngV
输入 decrypt() 它会给我 1q3
.只有一些字母被正确切换,而有些则没有。使用数组值的 replace()
方法有什么我遗漏的吗?我显然是 Java 的新手。
我也读了 replaceAll()
没有成功。
我怀疑你的问题是 "why is chaining .replace
acting oddly" 并且数组没有改变。你可以很容易地证明 replace 不会改变数组:
System.out.println(Arrays.toString(list));
encrypt("abc");
System.out.println(Arrays.toString(list));
那么你的代码是怎么回事?每次替换一个字母时,您都会得到一个新字符串,然后再次替换字母。我没有你的完整源代码,所以我会用一个真正简单的版本来展示:
a = a.replace("a", "b");
a = a.replace("b", "c");
a = a.replace("c", "d");
因为 "abc" 是.... 'ddd'.
这个问题的答案是一次查看每个字母并进行更改。遍历字符串并创建一个新字符串。