繁体   English   中英

string.split,用于替换C#中的字符

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM