字符串。插入多个值。是否可以?我仍在学习C#,有一件事我似乎找不到答案。如果我有一个看起来像“abcdefg012345”的字符串,并且我希望它看起来像“ab-cde-fg-012345”,我想要这样的东西:stringS1=“abcdefg012345”;stringS2=S1.Insert(2,"-");字符串S3=S2.Insert(6,"-");stringS4=S3.Insert..........现在我正在寻找是否有可能以某种方式将这个al变成1行而不必制作所有这些字符串。我认为这可能会以某种方式起作用?无论您是否可以使其成为单行代码(您可以),它总是会导致创建多个字符串,因为.NET中的字符串是不可变的如果您想在不创建多个字符串的情况下高效地执行此操作,请执行此操作,你可以使用StringBuilder。扩展方法也可以使其更易于使用。publicstaticclassStringExtensions{publicstaticstringMultiInsert(thisstringstr,stringinsertChar,paramsint[]positions){StringBuildersb=newStringBuilder(str.Length+(positions.Length*insertChar.Length));varposLookup=newHashSet(位置);for(inti=0;i请注意,此示例StringBuilder将StringBuilder初始化为正确的长度,因此无需增长StringBuilder。用法:"abcdefg012345".MultiInsert("-",2,5);//产生"abc-def-g012345""abcdefg012345".MultiInsert("-",2,5);//产生“abc-def-g012345”例子:http://rextester.com/EZPQ89741stringS1=“abcdefg012345”.Insert(2,“-”).Insert(6,“-”).....;如果插入字符串的位置是常量,可以考虑使用string.Format()方法。例如:stringstrTarget=String.Format("abc{0}def{0}g012345","-");字符串s="abcdefg012345";foreach(varindexin[2,6,...]{s=s.Insert(index,"-");}我喜欢这个StringBuildersb=newStringBuilder("abcdefg012345");sb.Insert(6,'-').Insert(2,'-').ToString();Strings1="abcdefg012345";字符串分隔符="-";s1=s1.Insert(2,seperator).Insert(6,seperator).Insert(9,seperator);像这样链接它们可以减少你的行数。这是有效的,因为Insert方法使用提供的参数返回字符串值s1,然后在返回的字符串上调用Insert函数,等等。另外值得注意的是String是一个特殊的不可变类,所以每次给它赋值时它都会被重新创建。另外值得注意的是String是一种特殊类型,允许你通过调用构造函数将它设置为一个新的实例,上面的第一行将是在语句标记中使用文字调用构造函数。只是为了完成和展示鲜为人知的聚合函数的使用,这是另一个单行代码:stringresult=new[]{2,5,8,15}.Aggregate("abcdefg012345",(s,i)=>s.Insert(i,"-"));结果是ab-cd-ef-g01234-5。但是,我不推荐这种变体。一见钟情太难把握。编辑:无论如何,这个解决方案不起作用,因为“-”将被插入到修改后的字符串的索引处,而不是原始字符串的位置。但话又说回来,这里的大多数答案都遇到同样的问题。在这种情况下,您应该使用StringBuilder,因为Strings对象是不可变的,并且您的代码实际上将为每个操作创建一个全新的字符串。http://msdn.microsoft.com/en-us/library/2839d5h5(v=vs.71).aspx此处有更多信息:http://www.dotnetperls.com/stringbuilder示例:namespaceConsoleApplication10{classProgram{staticvoidMain(string[]args){StringBuildersb=newStringBuilder("abcdefg012345");sb.Insert(2,'-');sb.Insert(6,'-');控制台.WriteLine(sb);控制台.Read();}}}如果你真的想要它在一行,你可以简单地做这样的事情:以上是C#学习教程:string.insertmultiplevalues。是否可以?分享的所有内容,如果对你有用,需要了解更多C#学习教程,希望大家多多关注——StringBuildersb=newStringBuilder("abcdefg012345").Insert(2,'-')。插入(6,'-');本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
