在进行数据传输和存储的时候我们经常要把很多元素的数据集合放到一个变量里传递,这样既减少了传递次数又减少了占用空间。例如我要把产品名和产品id以及产品价格统一写到一传传递就会构造出如下这样一个字符串 123|iphone4s|$200 然后在另一个页面或程序中去处理这个字符串,今天就来讲一下C#(Asp.net)中split方法的使用。

 

工具/原料

  • 记事本

  • C#开发环境

步骤/方法

  1. 我们先来看第一种情况:

    string str = "aaaa|ccccc|dddd|eeeee|ffff";
    string[] array = str.Split('|');
    foreach (string i in array) Response.Write(i+"<br />");

    所用方法重载如下:

    在Split方法中需要的是一个 char型的数组,那么我们上面的情况传入的参数就是只有一个字符的char型参数'|' 所以这个| 要用两个单引号引起来,当然我们还可以把代码写成这样:

    string str = "aaaa|ccccc|dddd|eeeee|ffff";
    string[] array = str.Split(new char[1]{'|'});
    foreach (string i in array) Response.Write(i+"<br />");

    输出结果:

    aaaa
    ccccc
    dddd
    eeeee
    ffff

    .net中split的用法,asp.net字符分隔
  2. OK,第一种情况解决了,那么如今我们又遇到了另一个问题,如果是多种字符的该如何处理,例如:

    aaaa|ccccc,dddd,eeeee|ffff

    处理代码如下:

    string str = "aaaa|ccccc,dddd,eeeee|ffff";
    string[] array = str.Split(new char[2] { '|', ','});
    foreach (string i in array) Response.Write(i+"<br />");

    上面我们已经说到过了,Split里第一个重载所需要的参数是一个char型数组,那么既然是数组,我们当然可以多定义几个字符传进去咯。

    输出结果:

    aaaa
    ccccc
    dddd
    eeeee
    ffff

  3. 单字符的情况我们已经解决了,那么突然我们又遇到了另一种情况,如:

    sinabaidusohubaiduyahoobaiduqq

    这样一个字符串,我们是用baidu这个字符串来分割的,如何来处理呢

    代码如下:

    string str = "sinabaidusohubaiduyahoobaiduqq";
    string[] sArray = Regex.Split(str, "baidu", RegexOptions.IgnoreCase);
    foreach (string i in sArray) Response.Write(i.ToString() + "<br />");

    输出结果:

    sina
    sohu
    yahoo
    qq

  4. 一般问题以上三种情况基本都可以解决了,但是有的时候我们会出现分隔出来的数据为空的情况,那么出现这种情况如何来避免呢。

    我们且来看第二个参数的注释:

    当选择None的时候,返回的结果里将会包含空元素

    当选择RemoveEmptyEntries的时候将会把为空的元素去除掉。

    OK,至此我们用Split分隔的一些情况就都讲解完了。

    .net中split的用法,asp.net字符分隔
    .net中split的用法,asp.net字符分隔