gpt4 book ai didi

java - 如何用Java中的空格替换字符串中的奇数/偶数字符?

转载 作者:行者123 更新时间:2023-11-29 04:54:50 26 4
gpt4 key购买 nike

如果给定一个像“go to med!”这样的字符串例如,如何只替换偶数字符?问题是,虽然我的代码处理了第一个单词,但单词之间的空格本身算作一个字符,并且弄乱了第二个单词的替换,第二个单词的第一个字母被归类为偶数。

这是我的尝试

public static void main(String[] args) {
String s = "go to med!";
String alphabetS = "abcdefghijklmnopqrstuvwxyz";
StringBuilder sb = new StringBuilder(s);

for(int i=0; i<s.length(); i++){
char currChar = s.charAt(i);

int idx = alphabetS.indexOf(currChar);
if (idx != -1)
if (i%2==1)

{
sb.setCharAt(i, '*');
}

}
System.out.println(sb);

}

这给出了输出“g+ +o m+d!”(第二个字母被正确替换为 + 是偶数,但是第二个单词的第一个字母不应该替换为“first”不是“even”。如何让索引忽略空格?

答案最好不要包含数组,只包含 Char 和 String 方法。

最佳答案

您可以简单地拆分空间上的输入并单独处理每项工作。然后,您可以使用 StringJoiner 来拼凑结果,例如...

String s = "go to med!!";
String alphabetS = "abcdefghijklmnopqrstuvwxyz";

String[] words = s.split(" ");
StringJoiner sj = new StringJoiner(" ");
for (String word : words) {
StringBuilder sb = new StringBuilder(word);
for (int i = 0; i < sb.length(); i++) {
char currChar = sb.charAt(i);

int idx = alphabetS.indexOf(currChar);
if (idx != -1) {
if (i % 2 == 1) {
sb.setCharAt(i, '*');
}
}

}
sj.add(sb.toString());
}
System.out.println(sj.toString());

哪些输出

g* t* m*d!!

could this be done without using arrays - just with char and string methods?

而不是依赖于 i,您需要一个单独的计数器,它跟踪您指向的点以及可以用来忽略无效字符的点,例如

String s = "go to med!!";
String alphabetS = "abcdefghijklmnopqrstuvwxyz";

StringBuilder sb = new StringBuilder(s);
int counter = 0;
for (int i = 0; i < sb.length(); i++) {
char currChar = sb.charAt(i);

int idx = alphabetS.indexOf(currChar);
if (idx != -1) {
if (counter % 2 == 1) {
System.out.println("!!");
sb.setCharAt(i, '*');
}
counter++;
}

}
System.out.println(sb.toString());

仍然输出

g* t* m*d!!

关于java - 如何用Java中的空格替换字符串中的奇数/偶数字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34167564/

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