C#中foreach的代码优化

时间:2018-06-14 17:40:28

标签: c#

代码:

string testquestions = "1,2,100,3,4,101,98,99";
string[] qidarray = testquestions.Split(',');

StringBuilder sb = new StringBuilder();

foreach (string s in qidarray)
{
    sb.Append(String.Format(@"({0}),",s));
}

string output= sb.ToString().Substring(0, sb.ToString().Length - 1);

期望输出=

(1),(2),(100),(3),(4),(101),(98),(99)

代码有效。我想知道这是实现结果的最佳方式。有没有更好的方法来达到预期的效果?

有没有办法不使用foreach循环?

2 个答案:

答案 0 :(得分:8)

这样就可以了。代码首先拆分字符串并使用constexpr Q(int i = 0, int f = 0) : integer(i),fractional(f) {} 格式化为所需的输出。

linq

控制台输出

var strToPrint = string.Join(",", testquestions.Split(',')
                       .Select(s => string.Format(@"({0})", s)));

您可以在此处查看实时小提琴 - https://dotnetfiddle.net/4zBqMf

修改:

正如@paparazzo所建议的那样,您可以使用字符串插值将语法编写为

Console.WriteLine(string.Join(",", testquestions.Split(',')
                        .Select(s => string.Format(@"({0})", s))));

活小提琴 - https://dotnetfiddle.net/xppLH2

答案 1 :(得分:1)

以下是使用替换的其他一些方法。

string testquestions = "1,2,100,3,4,101,98,99";

string result = new StringBuilder("(" + testquestions + ")").Replace(",", "),(").ToString();

string result1 = "(" + testquestions.Replace(",", "),(") + ")";

string result2 = "(" + new Regex(",").Replace(testquestions, "),(") + ")";