C#入门——字符串处理方法(连接)

        每当看到很多项目中,多条件查询中,一些人为了拼接SQL脚本,直接来一个"SELECT [Column] FROM [Table] WHERE 1 = 1"我就来气,这么做的目的,仅仅是为了后面直接可以拼接类似" AND [Column] = value"这种格式,而且不会出错哦。

        实际上C#语言中有很多方法可以保障字符串拼接。

        1. string.Concat

        string.Concat 方法是用来做字符串拼接的,如果字符串拼接的数量不多,建议可以使用此方法。例如:

string name = Console.ReadLine();
string welcome = "welcome to C#";
string result = string.Concat("Hello ", name, ", ", welcome);
Console.WriteLine(result);

        输入:Jerry

        输出:Hello Jerry,welcome to C#

        此方法相当简单,仅仅是将字符串连起来,不再多讲。

        2.string.Join

        string.Join方法用处还是比较多的,这个方法是做什么的呢?我们还是先看例子:

string[] strs = new string[] { "Hello Jerry", "welcome to C#" };
string result = string.Join(", ", strs);
Console.WriteLine(result);

        输出:Hello Jerry,welcome to C#

        此方法意思,将数组中的每个元素都连接起来,Join的第一个参数,是表示此次分割的分割标识符,是一个字符串。我们不妨再回头看看前面提到的"SELECT [Column] FROM [Table] WHERE 1 = 1"。

        我现在将SQL定义为"SELECT [Column] FROM [Table]",看代码:

List<string> conditions = new List<string>();
char[] likeFlag = new char[] { '%', '%'};
string strSQL = "SELECT [Column] FROM [Table]";
if (!string.IsNullOrEmpty(name))
{
    conditions.Add("Name = @Name");
    parameters.Add(new SqlParameter("@Name", name));
}
if (!string.IsNullOrEmpty(content))
{
    conditions.Add("Content LIKE @Content");
    parameters.Add(new SqlParameter("@Content", string.Concat("%", content, "%")));
}
if (!string.IsNullOrEmpty(address))
{
    conditions.Add("Address LIKE @Address");
    parameters.Add(new SqlParameter("@Address", string.Join(address, likeFlag)));
}
if (conditions.Count > 0)
{
    string condition = string.Join(" AND ", conditions);
    strSQL = string.Concat(strSQL, " WHERE ", condition);
}

        当然这段代码并不是很完美,也不需要完美,毕竟只是以此来抛砖引玉,看懂即可。声明的char数组来组装模糊查询百分号的方法,也不建议模仿,仅仅是说这样用也可以罢了。用到了string.IsNullOrEmpty方法就不多解释了,实在不懂就劳烦您查一下。

       

       那么仅仅在此有用吗?非也,其实Join方法用途相当广泛,如果你是做Web开发的,大量地方因为Join方法都可以变得简单的,特别需要说明的是,JavaScript的字符串操作也支持Join和Concat方法,屡试不爽,相信你JSON或者数组,需要组装为能提交的字符串的时候,难道就没有冲动用用这两个方法?

原文地址:https://www.cnblogs.com/WangJerry/p/5130649.html