C# “得到字符串”;AA、BB、CC“;我想';AA'';BB'';抄送''"E;”我能做得更聪明些吗?

C# “得到字符串”;AA、BB、CC“;我想';AA'';BB'';抄送''"E;”我能做得更聪明些吗?,c#,string,C#,String,我知道我可以这样做: string input = "AA,BB,CC"; string output = ""; foreach (var item in input.Split(',')) { output += string.Format("'{0}',", item); }; output =output.TrimEnd(','); Assert.Ar

我知道我可以这样做:

        string input = "AA,BB,CC";
        string output = "";
        foreach (var item in input.Split(','))
        {
            output += string.Format("'{0}',", item);
        };
        output =output.TrimEnd(',');

        Assert.AreEqual("'AA','BB','CC'", output);
但可能有更聪明、更快的方法来做到这一点

谢谢你的建议


Larsi

我不确定它是否会比您现有的代码快,但您可以使用LINQ编写如下代码:

string output = String.Join(",",
    input.Split(',').Select(token => "'" + token + "'"));

我不确定它是否会比您现有的代码更快,但您可以使用LINQ并编写如下内容:

string output = String.Join(",",
    input.Split(',').Select(token => "'" + token + "'"));

不知道这是否会更慢,但会更短:

string output = "'" + input.Replace(",", "','") + "'";

不知道这是否会更慢,但会更短:

string output = "'" + input.Replace(",", "','") + "'";

我认为您需要
Split(',')
而不是
Split(“,”)
啊,这是我的错-我在编写该项目时将其放入的项目中有一个
string.Split(string)
扩展方法。“你对人的看法太苛刻了。”PhonicUK ok,删除了downvote。但实际上你还没有检查你的答案:)我想你需要
Split(',')
而不是
Split(“,”)
啊,这是我的错-我在写它时把它放进的项目中有一个
string.Split(string)
扩展方法。“你对人的看法太苛刻了。”PhonicUK ok,删除了downvote。但实际上你还没有检查你的答案:)+1我只是做了一个快速分析,这个一行程序比单独调用Split要快。我不知道string.Replace的内部结构,但我想它不应该为遇到的每个
分配内存。也许开头和结尾的“'”会,但不确定。但这些都是猜测。有人能确认吗?虽然从功能上来说,如果输入字符串中有带逗号的空格,例如
“AA,BB,CC”
,输出
“'AA','BB','CC'”
,可能并不像预期的那样。非常感谢,@Lumen我可以确认它比我的尝试快3倍多。+1我刚刚做了一个快速分析,这个一行程序比单独调用Split要快。我不知道string.Replace的内部结构,但我想它不应该为遇到的每个
分配内存。也许开头和结尾的“'”会,但不确定。但这些都是猜测。有人可以确认吗?虽然从功能上讲,如果输入字符串中有逗号空格,例如,
“AA,BB,CC”
,输出的
“'AA',BB',CC'”
,可能并不像预期的那样。非常感谢,@Lumen我可以确认它比我的尝试快3倍多。谢谢所有建议。被接受的答案快了三倍多。另一次尝试比我的尝试快2倍左右。但问这个问题的主要原因是,我希望有一些更优雅的语法,我得到了。非常感谢!谢谢你的建议。被接受的答案快了三倍多。另一次尝试比我的尝试快2倍左右。但问这个问题的主要原因是,我希望有一些更优雅的语法,我得到了。非常感谢!