如何在 c# stringbuilder 中追加每个 X

How to append every X in c# stringbuilder

我正在使用 unity 和 c#,但不确定如何使用 stringbuilder 在每 X 个字符后附加一个“/”。我有代码,可以使用下面的代码从数组构建一个字符串,并在每个字符串后添加一个逗号,但我需要在每个 x 字符串后添加“/”

它应该例如将“122342”转换为“1,2,2,/,3,4,2”。目前它会将其转换为“1,2,2,3,4,2” 这是我已有的代码

StringBuilder Builtstring = new StringBuilder();
foreach(string griditem in tobuild){

    Builtstring.Append(griditem).Append(",");

}
built = Builtstring.ToString();

您可以使用提供索引的 for 循环遍历字符串数组。
对于每次迭代,将当前字符串添加到 StringBuilder,以及一个 ',' 以防我们仍然没有到达数组中的最后一个字符串。
此外,在 x 字符串后添加一个“/”。我们可以知道我们使用 % (modulus) 运算符达到了 x 个字符串。
请注意,我从索引 = 1 开始循环。我这样做是因为值 0 和任何正数的模运算符将产生 0,这将在第一个单词后添加 '/' 字符,我们不一定想要。

static void Insert(StringBuilder b, int x, string[] tobuild)
{
    for(var index = 1; index < tobuild.Length; ++index)
    {   
        b.Append(tobuild[index]);

        if(index != tobuild.Length -1)
        {
            b.Append(",");
        }

        if(0 == index % x)
        {
            b.Append("/");
        }
    }
}

使用 FOR 循环,然后检查该字符是否是某个所需的第 n 个字符的因数。如果是这样,请添加一个额外的“/”。

        int x = 2; // your x
        StringBuilder builtstring = new StringBuilder();
        for (int i = 0; i < tobuild.Length; i++) 
        { 
            string item = tobuild[i];
            builtstring.Append(item).Append(",");
            if (i%x==0) { builtstring.Append("/"); }

        }
        string built = builtstring.ToString();

添加一个 if 语句来评估角色,然后采取相应的行动。

StringBuilder Builtstring = new StringBuilder();
foreach(string griditem in tobuild){
if(griditem == 'x') { Builtstring.Append(griditem).Append(@"/"); }
Builtstring.Append(griditem).Append(",");

}
built = Builtstring.ToString();

或者如果您确实想在放置斜线之前计算一定数量的字符,您可以这样做。

int count = 10;
int position = 0;
StringBuilder Builtstring = new StringBuilder();
foreach(string griditem in tobuild){
if(position == count) { Builtstring.Append(griditem).Append(@"/"); position = 0; }
else{Builtstring.Append(griditem).Append(","); position++;}}
built = Builtstring.ToString();