Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将字符串中的字符替换为另一个字符串中的另一个字符

将字符串中的字符替换为另一个字符串中的另一个字符
EN

Stack Overflow用户
提问于 2021-03-17 17:22:15
回答 2查看 196关注 0票数 0

最后,我试图用另一组字符串替换一个句子。但是,当我试图用另一个字符串的另一个字符替换字符串中的字符时,我遇到了一个路障。

到目前为止我的情况是这样的。

代码语言:javascript
运行
AI代码解释
复制
String letters = "abcdefghijklmnopqrstuvwxyz";
String encode = "kngcadsxbvfhjtiumylzqropwe";
// the sentence that I want to encode
String sentence = "hello, nice to meet you!";

//swapping each char of 'sentence' with the chars in 'encode'
for (int i = 0; i < sentence.length(); i++) {
    int indexForEncode = letters.indexOf(sentence.charAt(i));
    sentence.replace(sentence.charAt(i), encode.charAt(indexForEncode));
}

System.out.println(sentence);

这种替换字符的方法不起作用。有人能帮我吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-03-17 17:39:42

原因

代码语言:javascript
运行
AI代码解释
复制
sentence.replace(sentence.charAt(i), encode.charAt(indexForEncode));

不起作用的是String不变的(也就是说,它们永远不会改变)。因此,sentence.replace(...)实际上并不改变sentence,而是返回一个新的String。您需要编写sentence = sentence.replace(...)才能在sentence中捕获该结果。

好的,字符串101:下课(;->)

现在,尽管如此,您确实不想继续将部分编码的sentence重新分配回自己,因为几乎可以肯定,您会发现自己重新编码了已经编码的sentence的字符。最好是保留sentence的原始形式,同时每次构建一个编码的字符串,如下所示:

代码语言:javascript
运行
AI代码解释
复制
StringBuilder sb = new StringBuilder();
for (int i = 0; i < sentence.length(); i++){
    int indexForEncode = letters.indexOf(sentence.charAt(i));
    sb.append(indexForEncode != -1
            ? encode.charAt(indexForEncode)
            : sentence.charAt(i)
    );
}
sentence = sb.toString();
票数 4
EN

Stack Overflow用户

发布于 2021-03-17 18:02:30

我将使用字符数组,如下所示。对字符数组进行更改,然后使用String.valueOf获取字符串的新版本。

代码语言:javascript
运行
AI代码解释
复制
String letters = "abcdefghijklmnopqrstuvwxyz";
String encode =  "kngcadsxbvfhjtiumylzqropwe";
// the sentence that I want to encode
String sentence = "hello, nice to meet you!";

char[] chars = sentence.toCharArray();
for (int i = 0; i < chars.length; i++){
    int indexForEncode = letters.indexOf(sentence.charAt(i));
    // if index is < 0, use original character, otherwise, encode.
    chars[i] = indexForEncode < 0 ? chars[i] : encode.charAt(indexForEncode);
}
System.out.println(String.valueOf(chars));

打印

代码语言:javascript
运行
AI代码解释
复制
xahhi, tbga zi jaaz wiq!
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66683491

复制
相关文章

相似问题

添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档