向数组中的每个元素添加一个字符

6

在我的情况下,输入是一个由逗号分隔的元素列表字符串。

输入:

var input = "123,456,789";

期望的输出结果(一个字符串):
"'123','456','789'"

我正在寻找VB.net的解决方案,但我对它不是很熟悉。因此,我尝试在C#中实现它。但不确定我遗漏了什么。

我的尝试:

var input = "123,456,789";
var temp = input.Split(new Char[] { ',' });
Array.ForEach(temp, a => a = "'" + a + "'");
Console.WriteLine(String.Join(",",temp));

实际输出:

"123,456,789"

任何关于在vb.net中资助解决方案的帮助都将不胜感激 :)

非常感謝任何在VB.Net解決方案資金方面的幫助 :) - BetterLateThanNever
3
你的ForEach没有实现你想要的功能(它只是更新了一个本地变量a,而不是数组中的值)。 - juharr
因为字符串的工作方式,当你执行 a = "'" + a + "'" 时,并没有替换掉原来的 a 值。同时也没有改变被 split 返回的字符串集合中的值。相反,你**创建了一个新字符串并命名为 a**。这样原始字符串集合 temp 中的元素保持不变。 - user4843530
4个回答

6

您可以使用LINQ:

var result = string.Join(",", input.Split(',').Select(x => "'" + x + "'"))

这将字符串在,分隔符处分割,然后使用Select()在每个片段周围添加引号,并使用string.Join()重新组装数组。

编辑:以下是VB.NET等效解决方案:

Dim result As String
result = String.Join(",", input.Split(",").Select(Function (x) ("'" & x & "'" )))

这在C#中完美运作。实际上我正在寻找VB.net的解决方案。其中一些函数在VB.net中不可用 :( - BetterLateThanNever
@Reddy 如果你想要一个 VB.NET 的解决方案,你应该只标记 VB.NET 而不是 C#,并展示你在 VB.NET 中尝试的代码。 - juharr
我给它打了C#和VB的标签,但看起来有人编辑了它。由于我无法在C#中完成这个问题,所以在发布这个问题时我没有尝试在VB.NET中实现它。 - BetterLateThanNever
它抱怨 "'Select' 不是 'System.Array' 的成员。" - BetterLateThanNever
我怎么可能会忘记那个... 感谢您的时间 (Y) - BetterLateThanNever
显示剩余3条评论

2

input = Regex.Replace(input, "\d+", "'$0'");


0

这里有很多解决方案,但我认为这个会更快:

var newStr = "'" + string.Replace(str, ",", "','") + "'";

在VB.NET中

Private newStr = "'" & String.Replace(str, ",", "','") & "'"

0
var input = "123,456,789";
var temp = input.Split(new Char[] { ',' });
temp = Array.ConvertAll(temp, a => a = "'" + a + "'");

Console.WriteLine(String.Join(",", temp));

另请参阅:https://dev59.com/im865IYBdhLWcg3wU9CI#3867998


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接