将非零长度变量加入到字符串中

时间:2015-06-27 00:08:32

标签: c# string join concatenation

我通过将长字符串解析为:

来创建多个变量
Year
Make
Model
Color
ColorLower
Style

根据记录,我可能会在部分或全部变量中包含详细信息。但在大多数情况下,有些是空白的。在填充变量之后,我将它们添加到数据库字段中,该字段是汽车/车辆的描述。

目前我的if / else块一个接一个,如果变量的长度非零,则连接的描述变量

if (length($Year)>0)
{
    $Description == $Description + " " + Year
}
elsif (length($Make) > 0)
    $Description == $Description + " " + $Make
}   ...and so on

我现在所拥有的是工作,我有兴趣听到有一种更短,更紧凑的方式,我可以最大化我的代码。

谢谢!

3 个答案:

答案 0 :(得分:0)

更好的方法是使用StringBuilder

using System;
using System.Text;

namespace stringy
{
    class MainClass
    {
        public static void Main (string[] args)
        {
            string hello = "Hello World!";
            int i = 123;
            double d = 3.14;
            StringBuilder sb = new StringBuilder();
            sb.Append(hello);
            sb.Append(i);
            sb.Append(d);
            Console.WriteLine (sb.ToString());
        }
    }
}

添加字符串包括大量分配和重新分配。

答案 1 :(得分:0)

string Year = "2015", Make = "Ford", Model = "Rustbucket",
       Color = "Red", ColorLower = "Green", Style = "Car";
string[] stuff = { Year, Make, Model, Color, ColorLower, Style };
string Description = "Start ";

Description+=String.Join(" ", stuff.Where(t => t != ""));

答案 2 :(得分:0)

没有痛苦!没有收获!检查和内存优化:

    public class Entity{
        public string Year {get;set;}
        public string Make {get;set;}
        public string Model {get;set;}
        public string Color {get;set;}
        public string ColorLower {get;set;}
        public string Style {get;set;}
        public string Description{
            get {
                string format = "{0} ";
                StringBuilder sb = new StringBuilder();
                sb.Append(!string.IsNullOrEmpty(Year) && !string.IsNullOrEmpty(Year.Trim()) 
                    ? string.Format(format, Year.Trim()) : string.Empty);
                sb.Append(!string.IsNullOrEmpty(Make) && !string.IsNullOrEmpty(Make.Trim()) 
                    ? string.Format(format, Make.Trim()) : string.Empty);
                sb.Append(!string.IsNullOrEmpty(Model) && !string.IsNullOrEmpty(Model.Trim()) 
                    ? string.Format(format, Model.Trim()) : string.Empty);
                sb.Append(!string.IsNullOrEmpty(Color) && !string.IsNullOrEmpty(Color.Trim()) 
                    ? string.Format(format, Color.Trim()) : string.Empty);
                sb.Append(!string.IsNullOrEmpty(ColorLower) && !string.IsNullOrEmpty(ColorLower.Trim()) 
                    ? string.Format(format, ColorLower.Trim()) : string.Empty);
                sb.Append(!string.IsNullOrEmpty(Style) && !string.IsNullOrEmpty(Style.Trim()) 
                    ? string.Format(format.Trim(), Style.Trim()) : string.Empty);
                return sb.ToString();
            }
        }
    }
    static void Main()
    {
        var e1 = new Entity{Year="Y",Make="M",Model="Md",
            Color="C",ColorLower="CL",Style="S"};
        Console.WriteLine(e1.Description); // 'Y M Md C CL S'
    }