在组织部项目做批量删除的时候,感受到了Splite这个“小”函数的强大,在此做个总结。


    Split()函数是干什么的?

 Split()方法用于把一个字符串分割成下标从“0”开始的字符串数组;通俗理解:Split()函数就是一把剪刀,将长长的字符串剪碎,组成数组。

 

    Split()函数用在哪里?

    在.net和java语言中都包含该方法,在javascript中也非常常用,下面以在C#和javascript中的运用做介绍。

 

C#用法:
    expression.Split( [delimiter[, count[,compare]]])


    在”[]”中括号中的参数是可选参数,其中:

    Expression: 包含子字符串和分隔符的字符串表达式。如果expression是一个长度为零的字符串(""),Split则     返回一个空数组,即没有元素和数据的数组。

    Delimiter:用于标识子字符串边界的字符串字符,相当于用该参数来做分界,最终不包含在数组当中。

    Count: 要返回的子字符串数,–1表示返回所有的子字符串。

    Compare: 数字值,表示判别子字符串时使用的比较方式(不常用)

 

    示例:

    1、

string s=mycnameciscvincent;
string[] sArray=s.Split('c') ;
foreach(string i in sArray)
Console.WriteLine(i.ToString());



    输出下面的结果:
    my
    name
    is
    Vincent



    2、由多个字符充当分隔符:

string str="aaajbbbscccjdddseee"; 
string[] sArray=str.Split(new char[2] {'j','s'}); 
foreach(string i in sArray) Response.Write(i.ToString() + "<br>");



   输出结果:

aaa
     bbb
     ccc
     ddd
     eee

   类似分隔方法以及Split()的重载参考:

   

   在javascript中:

<script type="text/javascript">
var str="How are you doing today?"
document.write(str.split(" ") + "<br />")
document.write(str.split("") + "<br />")
document.write(str.split(" ",3))
</script>

   使用方法竟然雷同。


   思考:这个方法可以在那些情况下使用?

    目前接触的Split()方法用在对复选框的处理上很到位,代替了for循环遍历,从而提高了系统的性能,具体用法展示如下:


   (1)在js中获取选中的行信息:


var selectRows = $("#dg").datagrid("getSelections");
  //定义字符变量,用于将选中行的ID保存成字符串,并以特定符号分隔开
    var strIds = "";
    for (var i = 0; i < selectRows.length; i++) {
        strIds += selectRows[i].ID + ",";
    }
    //循环切割
strIds = strIds.substr(0, strIds.length - 1);
 //将该字符串传给Controller进一步操作
$.post('/CityBasicInfo/DeleteCityBasicInfo?CityId=' + strIds, function (jsonObj)



  (2)在Controller中的处理:

var tempCityID = Request["CityId"];
            //通过切割方式获得id
            string[] City = tempCityID.Split(',');

            bool result = false;
//循环ID实现对DataGrid中多条数据的操作,优化方案参考下文
            for (int i = 0; i < City.Length; i++)
            {
                CityBasicInfoViewModel cityBasic = new CityBasicInfoViewModel()
                {
                    CityID = new Guid(City[i]),
                    IsEnable = 0,
                    Operator = "zzh"
                };
                result = ICityBasic.DeleteCityBasicInfo(cityBasic);
            }

           

分析:明确使用","来进行分割,在JS方法中对于selectRow的拼接已经埋下了伏笔,而strids.substr(0,strlds.length-1)则将最后一个","巧妙的去掉,在Controller中通过split(‘,’)将每行的ID获取到,最终一个循环解决问题。

    优化:项目进行过程中,发现这样子会执行多次对于Service端的调用,不如直接将其以数组形式传到Service中,在B层进行Split操作,从而更加提高代码性能。