Add separator to string at every N characters?

后端 未结 13 2292
半阙折子戏
半阙折子戏 2020-11-27 13:20

I have a string which contains binary digits. How to separate string after each 8 digit?

Suppose the string is:

string x = \"111111110000000011111111         


        
13条回答
  •  甜味超标
    2020-11-27 13:32

    Ugly but less garbage:

    private string InsertStrings(string s, int insertEvery, char insert)
    {
        char[] ins = s.ToCharArray();
        int length = s.Length + (s.Length / insertEvery);
        if (ins.Length % insertEvery == 0)
        {
            length--;
        }
        var outs = new char[length];
        long di = 0;
        long si = 0;
        while (si < s.Length - insertEvery)
        {
            Array.Copy(ins, si, outs, di, insertEvery);
            si += insertEvery;
            di += insertEvery;
            outs[di] = insert;
            di ++;
        }
        Array.Copy(ins, si, outs, di, ins.Length - si);
        return new string(outs);
    }
    

    String overload:

    private string InsertStrings(string s, int insertEvery, string insert)
    {
        char[] ins = s.ToCharArray();
        char[] inserts = insert.ToCharArray();
        int insertLength = inserts.Length;
        int length = s.Length + (s.Length / insertEvery) * insert.Length;
        if (ins.Length % insertEvery == 0)
        {
            length -= insert.Length;
        }
        var outs = new char[length];
        long di = 0;
        long si = 0;
        while (si < s.Length - insertEvery)
        {
            Array.Copy(ins, si, outs, di, insertEvery);
            si += insertEvery;
            di += insertEvery;
            Array.Copy(inserts, 0, outs, di, insertLength);
            di += insertLength;
        }
        Array.Copy(ins, si, outs, di, ins.Length - si);
        return new string(outs);
    }
    

提交回复
热议问题