gpt4 book ai didi

c# - string.insert 多个值。这可能吗?

转载 作者:行者123 更新时间:2023-11-30 13:20:14 25 4
gpt4 key购买 nike

我仍在学习 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 行,而不必制作所有这些字符串。

我认为这在某种程度上是可能的?

最佳答案

无论您是否可以将其设为单行(您可以),由于 immutability,它总是会导致创建多个字符串.NET 中的 String

如果您想稍微高效地执行此操作而不创建多个字符串,您可以使用 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 多个值。这可能吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9484509/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com