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