如何用新字符替换字符串中的第 n 个字符?
How do I replace nth character in a String with a new character?
我被要求写一个 class 来使用特定规则对给定的句子进行编码。这个 class 应该使用循环和 Stringbuffer
。规则是:
- 每个点'.'将被替换为“*”。
- 每第 3 个字符(如果此字符不是 space 或点)
应该淘汰。
- 在新句末尾加一个代表总数的数字
消除字符数。
我写了代码,但我不明白为什么它不起作用。有人可以帮忙吗?
例如:
sentence = "Katie likes to observe nature."
应该转化为:
"Kaie iks t obere ntue*8"
但是,使用我的代码我得到:
"Katie likes to observe nature*."
谢谢!
public void createEncodedSentence() {
StringBuffer buff = new StringBuffer();
int counter = 0;
char a;
for (int i = 0; i < sentence.length(); i++) {
a = sentence.charAt(i);
if (a == '.') {
buff.append('*');
}
if (a != ' ' && a != '.') {
counter++;
}
if (counter % 3 == 0) {
buff.append("");
}
buff.append(sentence.charAt(i));
}
encodedSentence = buff.toString();
}
您的逻辑的主要问题是,在将 String 附加到 buff
之后,您继续进行 that 迭代跳转到字符串中的下一个字符。
将您的方法更改为如下:
public static StringBuffer createEncodedSentence(String sentence) {
StringBuffer buff = new StringBuffer();
int counter = 0;
char a;
for (int i = 0; i < sentence.length(); i++) {
a = sentence.charAt(i);
if (a == '.') {
buff.append("*");
continue;
}
if ((i + 1) % 3 == 0 && a != ' ' && a != '.') {
counter++;
continue;
}
buff.append(sentence.charAt(i));
}
buff.append(counter);
return buff;
}
逻辑:
- 如果字符是
.
,那么我们附加一个*
并跳转到句子中的下一个字符。
- 如果它是第 3 个索引,那么我们递增计数器并跳转到下一个字符。
- 在for循环迭代结束时,我们添加
字符已被替换
我被要求写一个 class 来使用特定规则对给定的句子进行编码。这个 class 应该使用循环和 Stringbuffer
。规则是:
- 每个点'.'将被替换为“*”。
- 每第 3 个字符(如果此字符不是 space 或点) 应该淘汰。
- 在新句末尾加一个代表总数的数字 消除字符数。
我写了代码,但我不明白为什么它不起作用。有人可以帮忙吗?
例如:
sentence = "Katie likes to observe nature."
应该转化为:
"Kaie iks t obere ntue*8"
但是,使用我的代码我得到: "Katie likes to observe nature*."
谢谢!
public void createEncodedSentence() {
StringBuffer buff = new StringBuffer();
int counter = 0;
char a;
for (int i = 0; i < sentence.length(); i++) {
a = sentence.charAt(i);
if (a == '.') {
buff.append('*');
}
if (a != ' ' && a != '.') {
counter++;
}
if (counter % 3 == 0) {
buff.append("");
}
buff.append(sentence.charAt(i));
}
encodedSentence = buff.toString();
}
您的逻辑的主要问题是,在将 String 附加到 buff
之后,您继续进行 that 迭代跳转到字符串中的下一个字符。
将您的方法更改为如下:
public static StringBuffer createEncodedSentence(String sentence) {
StringBuffer buff = new StringBuffer();
int counter = 0;
char a;
for (int i = 0; i < sentence.length(); i++) {
a = sentence.charAt(i);
if (a == '.') {
buff.append("*");
continue;
}
if ((i + 1) % 3 == 0 && a != ' ' && a != '.') {
counter++;
continue;
}
buff.append(sentence.charAt(i));
}
buff.append(counter);
return buff;
}
逻辑:
- 如果字符是
.
,那么我们附加一个*
并跳转到句子中的下一个字符。 - 如果它是第 3 个索引,那么我们递增计数器并跳转到下一个字符。
- 在for循环迭代结束时,我们添加 字符已被替换