[英]string.split for alternating characters in c#
我知道这将是一个简单的答案,但是我是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] );
}
}
笔记:
我知道没有自动执行此操作的BCL方法(例如string.SplitAlternating()
。
由于字符串的大小是已知的,因此可以使用固定的缓冲区大小来初始化StringBuilders
。
LINQ解决方案(@usr的答案)更干净但更慢(如果很重要,这可能很少见)。
如果性能确实很重要,则最快的方法可能是获取指向原始char数组开始的指针,并通过递增由使用stacalloc
声明的两个char数组创建的两个单独的指针进行stacalloc
。 随后,然后可以将这两个char数组作为参数传递给string的构造函数。 确保附加空终止符。
var a = new string(source.Where((c,i) => i % 2 == 0).ToArray());
var b = new string(source.Where((c,i) => i % 2 != 0).ToArray());
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.