c# – string.insert多个值.这可能吗?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c# – string.insert多个值.这可能吗?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1147字,纯文字阅读大概需要2分钟。
内容图文
![c# – string.insert多个值.这可能吗?](/upload/InfoBanner/zyjiaocheng/763/5f80b1bf369742eabe06a44903cfbef5.jpg)
我还在C#学习,有一件事我似乎无法找到答案.
如果我有一个看起来像这样的字符串“abcdefg012345”,我想让它看起来像“ab-cde-fg-012345”
我想这样的事情:
string S1 = "abcdefg012345";
string S2 = S1.Insert(2, "-");
string S3 = S2.Insert(6, "-");
string S4 = S3.Insert.....
...
..
现在我正在寻找是否有可能以某种方式将这个al变成1行,而不必制作所有这些字符串.
我认为这可能以某种方式?
解决方法:
无论你是否可以将它作为单行(你可以),它总是会导致创建多个字符串,因为.NET中的字符串是immutability
如果您想在不创建多个字符串的情况下有效地执行此操作,则可以使用StringBuilder.扩展方法也可以使它更容易使用.
public static class StringExtensions
{
public static string MultiInsert(this string str, string insertChar, params int[] positions)
{
StringBuilder sb = new StringBuilder(str.Length + (positions.Length*insertChar.Length));
var posLookup = new HashSet<int>(positions);
for(int i=0;i<str.Length;i++)
{
sb.Append(str[i]);
if(posLookup.Contains(i))
sb.Append(insertChar);
}
return sb.ToString();
}
}
请注意,此示例预先将StringBuilder初始化为正确的长度,因此无需增长StringBuilder.
用法:“abcdefg012345”.MultiInsert(“ – ”,2,5); //收益率“abc-def-g012345”
实例:http://rextester.com/EZPQ89741
内容总结
以上是互联网集市为您收集整理的c# – string.insert多个值.这可能吗?全部内容,希望文章能够帮你解决c# – string.insert多个值.这可能吗?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。