如何使用 stringbuilder 添加所有其他字符并在空格处重新启动?

Posted

技术标签:

【中文标题】如何使用 stringbuilder 添加所有其他字符并在空格处重新启动?【英文标题】:How to use utlizie stringbuilder to add every other character and restart at a space? 【发布时间】:2019-01-18 08:31:53 【问题描述】:

半字符串应该返回字符串中的每个其他字符,它应该返回起始字符。例如,halfOfString(“Qbkm Zgis”, 0) 返回字符串“Qk gs”,调用halfOfString(“Qbkm Zgis”, 1) 返回字符串“bmZi”。一旦你到达一个空格,后面的字母就应该被计算在内,然后你继续每一个字母。

我的代码没有按应有的方式工作,我一直在尝试用不同的方式进行修复,但是空格字符会导致所有问题。

 public String halfOfString(String message,int start )
    StringBuilder halfString = new StringBuilder();
    int length= message.length();
    for (int k=start;k<length;k++)
        char achar = message.charAt(k+1);

        if (Character.isLetter(achar)!=true)
            achar='\0';

        

        System.out.println("this is char"+"\t"+achar);
        halfString.append(achar );
        System.out.print("this is halfString in the forloop"+"\t"+halfString);

    

    return halfString.toString();



【问题讨论】:

【参考方案1】:

你需要做chatAt(k)而不是k+1,你不需要检查它是否是一个空格。也做k += 2 而不是k++ (正如你想要的所有其他角色)。最后,您不需要将长度解析为变量。您可以直接检查长度:

 public static String halfOfString(String message,int start )
            StringBuilder halfString = new StringBuilder();
            for (int k=start;k<message.length();k+=2)
                char achar = message.charAt(k);
                halfString.append(achar);
            
            return halfString.toString();
        

输出

//with 0 as start:
Qk gs
//With 1 as start:
bmZi

【讨论】:

谢谢你的代码是正确的。你怎么知道你不需要检查空间?我正在努力思考我的代码。我还认为空格算作一个字符? @Eli 为什么要检查空格?它将像任何其他 char 一样被附加 在某些编程语言中,空格被视为一个字符。我还在学习java。

以上是关于如何使用 stringbuilder 添加所有其他字符并在空格处重新启动?的主要内容,如果未能解决你的问题,请参考以下文章

如何添加到 StringBuilder?

C# String与StringBuilder的区别和使用方法

C# String与StringBuilder的区别和使用方法

使用 StringBuilder 用空格或其他字符填充字符串

当我使用 StringBuilder.Append 而不是 .AppendLine 时,是不是需要添加额外的 .Append(crlf)s?

既然我们已经有了 StringBuilder,为啥还要使用 StringJoiner?