如何用条件连接一些字符串?

时间:2011-10-14 12:14:02

标签: c# .net string

我有下一个代码:

string result = string.Join(",", 
someCondition1 ? str1 : string.Empty,
someCondition2 ? str2 : string.Empty,
someCondition3 ? str3 : string.Empty,
//some other conditions like those
......
);

如果我有:

someCondition1 = true; str1 = "aaa";
someCondition2 = false; str2 = "bbb";
someCondition3 = true; str3 = "ccc";

然后结果看起来像“aaa ,, ccc”,但我需要“aaa,ccc”(没有空字符串)。 哪种方法最好?

4 个答案:

答案 0 :(得分:10)

如下:

// Or use a List<string> or whatever...
string[] strings = new string[] { someCondition1 ? str1 : null,
                                  someCondition2 ? str2 : null,
                                  someCondition3 ? str3 : null };

// In .NET 3.5 
string result = string.Join(",", strings.Where(x => x != null));

你真的需要有六个独立的变量吗?如果您已经拥有一系列价值观和条件(无论是单独的还是在一起),那将更加优雅。

答案 1 :(得分:1)

如果只输入一些if语句呢?

StringBuilder result = new StringBuilder();

if(someCondition1)
 result.Append(str1);
if(someCondition2)
 result.Append(str2);
if(someCondition3)
 result.Append(str3);

答案 2 :(得分:0)

如果你计划做很多事情,你可能想要建立自己的类来以一种很好的方式为你做这件事。我并不是说这是最好的方式,但制作这些东西总是很有趣:

public static class BooleanJoiner
{
    public static string Join(params Tuple<bool, string>[] data)
    {
        StringBuilder builder = new StringBuilder();
        int curr = 0;
        foreach (Tuple<bool, string> item in data)
        {
            if (item.Item1)
            {
                if (curr > 0)
                    builder.Append(',');
                builder.Append(item.Item2);
            }
            ++curr;
        }
        return builder.ToString();
    }   // eo Join
}

用法:

        string result = BooleanJoiner.Join(new Tuple<bool, string>(true, "aaa"),
                                           new Tuple<bool, string>(false, "bbb"),
                                           new Tuple<bool, string>(true, "ccc"));

答案 3 :(得分:0)

即使你也可以这样使用

string result = (someCondition1 ? str1 + "," : String.Empty + (someCondition2 ? str2
+ ",": String.Empty) + (someCondition3 ? str3 : String.Empty);