Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 根据C中的字符数将长字符串拆分为子字符串_C#_String_Split - Fatal编程技术网

C# 根据C中的字符数将长字符串拆分为子字符串

C# 根据C中的字符数将长字符串拆分为子字符串,c#,string,split,C#,String,Split,我想分开一条长的线,看起来像这样 WEYGJJSGDGKWEYGWJIEWLEWGYGCIEFEWJKNFKEUYFJKDYGWFSN 进入 weygjjsgdgk 韦格杰维尔 韦吉吉埃利诺 jknfkeuwyfj KDYGWSN 以10个字符为单位…并将其格式化为外部格式…我如何才能做到这一点?您可以使用、Substringint startIndex、int length和Substringint startIndex。我几乎没有做过C,但我认为它看起来像这样: string origina

我想分开一条长的线,看起来像这样

WEYGJJSGDGKWEYGWJIEWLEWGYGCIEFEWJKNFKEUYFJKDYGWFSN

进入

weygjjsgdgk

韦格杰维尔

韦吉吉埃利诺

jknfkeuwyfj

KDYGWSN

以10个字符为单位…并将其格式化为外部格式…我如何才能做到这一点?

您可以使用、Substringint startIndex、int length和Substringint startIndex。我几乎没有做过C,但我认为它看起来像这样:

string originalString = "weygjjsgdgkweygwjiewlewegygciefewjknfkeuwyfjkdygwfsn";
string newString = "";
while (originalString.Length > 10) {
    string line = originalString.Substring(0, 10);
    newString = "\"" + line + "\"\n";
    originalString = originalString.Substring(10);
}
newString = "\"" + originalString + "\"\n";

可能稍微快一点的方法-对于更长的字符串应该更快

static void Main(string[] args)
{
    string input = "012345678901234567890";

    // Create a StringBuilder with enough space
    StringBuilder sb = new StringBuilder(input.Length + input.Length / 10 * 3 + 3);

    sb.Append('"');
    for (int n = 0; n < input.Length; n++)
    {
        // don't add if this is the first char
        if (n > 0 && n % 10 == 0)
        {
            sb.Append("\"\n\"");
        }
        sb.Append(input[n]);
    }
    sb.Append('"');

    Console.WriteLine(sb.ToString());
}
正则表达式方法

结果

"weygjjsgdgk"
"weygwjiewle"
"wegygciefew"
"jknfkeuwyfj"
"kdygwfsn"
还有一种方法:

private static string[] SplitBy(string source, int count)
{
    const string Separator = "╩";
    var byCount = source.Select((c, i) => i % count == 0 ? Separator + c : c.ToString()).ToArray();
    var inString = string.Join(string.Empty, byCount);
    return inString.Split(new[] { Separator }, StringSplitOptions.RemoveEmptyEntries);
}
使用示例:

var splitted = SplitBy("some very long str", 5);
结果:

some 
very 
long 
str
"weygjjsgdgk"
"weygwjiewle"
"wegygciefew"
"jknfkeuwyfj"
"kdygwfsn"
private static string[] SplitBy(string source, int count)
{
    const string Separator = "╩";
    var byCount = source.Select((c, i) => i % count == 0 ? Separator + c : c.ToString()).ToArray();
    var inString = string.Join(string.Empty, byCount);
    return inString.Split(new[] { Separator }, StringSplitOptions.RemoveEmptyEntries);
}
var splitted = SplitBy("some very long str", 5);
some 
very 
long 
str