我知道这将是一个简单的答案,但我是C#的新手.对于不同类型的拆分有很多答案,但我找不到这个问题.我试图通过交替的字符将字符串拆分为两个.
例子是:string example = "stackoverflow"输出将是"sakvrlo"和"tcoefo".
如果它是奇数个字符,那么两个新字符串的长度是否不同并不重要.
谢谢!
StringBuilder sb1 = new StringBuilder();
StringBuilder sb2 = new StringBuilder();
string source = "some string to split";
// ALTERNATE: if you want an explicitly typed char[]
// char[] source = "some string to split".ToCharArray();
for( int i = 0; i < source.Length; i++ )
{
if( i % 2 == 0 )
{
sb1.Append( source[i] );
}
else
{
sb2.Append( source[i] );
}
}
Run Code Online (Sandbox Code Playgroud)
笔记:
没有我知道的BCL方法会自动执行此操作(例如string.SplitAlternating().
由于字符串的大小是已知的,因此StringBuilders可以使用固定的缓冲区大小进行初始化.
LINQ解决方案(@ usr的答案)更清晰但更慢(如果重要,可能很少).
如果性能确实很重要,最快的方法可能是获取指向原始char数组的开头的指针,并通过递增由使用声明的两个char数组创建的两个单独的指针进行迭代stacalloc.随后,这两个char数组可以作为参数传递给string的构造函数.确保附加null终止符.