zoukankan      html  css  js  c++  java
  • String Split 和 Join

    很多时候处理字符串数据,比如从文件中读取或者存入 - 我们可能需要加入分隔符(如CSV文件中的逗号),或使用一个分隔符来合并字符串序列。

    很多人都知道使用split()的方法,但使用与其对应的Join()方法的人就没有那么多。今天,让我们看看它们的应用。

    Split() – 根据分隔符切割字符串成几部分

    分割符可以是以下几种形式中的一种:

    • 只有一个字符的数组:
      • 比方对于“A,B,C,D,E,F” 可以使用 ‘,’ 或者 new [] { ‘,’ } 
    • 有多个字符的数组:
      • 比方对于“A,B-C,D*E,F”使用 new [] { ‘,’ ‘-‘ ‘*’ } :
    • 只有一个字符串的数组:
      • 比方对于 “A=>B=>C=>D=>E=>F” new [] { “=>” }
    • 有多个字符串的数组 :
      • 比方对于 “A=>B<=C=>D<=E=>F”使用 new [] { “=>”, “<=” }

    让我们在实例中看看:

     

    string testString = "James Hare,1001 Broadway Ave,St. Louis,MO,63101";

    //传递的分割可以是一个数组 string[] results = testString.Split(new[] { ',' });

    //或者在asp.net 4.0 下传递单独的一个char results = testString.Split(',');

    得到的结果如下

    ScreenShot022 

     
    对待同样的字符串,我们使用 ‘,’ 和 ‘ ‘ (空格):

     

    string testString = "James Hare,1001 Broadway Ave,St. Louis,MO,63101"; //传递一个数组作为分割的标记 string[] results = testString.Split(new[] { ',', ' ' }); //或者在4.0 下可以直接这样传递 results = testString.Split(',', ' ');

    得到下面的结果:
    ScreenShot023

    使用 string 作为分割符用法是基本一样的:

    string testString = "James Hare,,1001 Broadway Ave,St. Louis,MO,63101"; string[] results = testString.Split(new[] { ",," }, StringSplitOptions.None);

    结果:

    ScreenShot024

    注意在这里我们必须要提供一个 StringSplitOptions 的选择. 

    这个枚举的类型有两个值:

    • StringSplitOptions.None: 包含返回的数组中的空数组元素.
    • StringSplitOptions.RemoveEmptyEntries:  省略返回的数组中的空数组元素.

    最后, Split() 有一个形式是让你可以限制返回数组元素数量的. 在这种情况下,前面 n-1 的 元素基于你的条件生成,最后一个则是剩下的没有被分割的部分:

    string testString = "James Hare,,1001 Broadway Ave,,,St. Louis,MO,63101";
    //返回含有两个元素的数组.
    string[] results = testString.Split(new[] { ',' }, 2, StringSplitOptions.None);
    for (int i = 0; i < results.Length; i++) { Console.WriteLine(" Element {0}: "{1}"", i, results[i]); }
    使用限制数量的结果是:
    ScreenShot025
       
    注意第二个元素还包含了’,’。

    Join() – 串联对象数组的各个元素,其中在每个元素之间使用指定的分隔符

    参数
    separator
    类型:System.String 要用作分隔符的字符串。
    values
    类型:System.Object[] 一个数组,其中包含要连接的元素。
    返回值

    类型:System.String 一个由 values 的元素组成的字符串,这些元素以 separator 字符串分隔。

    看下面的例子,用StringBuilder来实现串联一组字符串:

    string[] parts = { "Apple", "Orange", "Banana", "Pear", "Peach" };
    var builder = new StringBuilder();
    for (int i = 0; i < parts.Length; i++) { builder.Append(parts[i]);
    // 将最后一个','去掉
    if (i != parts.Length - 1) { builder.Append(", "); } }
    // 结果是 "Apple, Orange, Banana, Pear, Peach"
    var result = builder.ToString();
    
    

    string.Join() 可以轻松实现:

     
     string[] parts = { "Apple", "Orange", "Banana", "Pear", "Peach" };  var result = string.Join(", ", parts);
     

    很多人可以没有意识到 Join() 可以合并任何类型,如 int, DateTime, double, 或其他自定义的类型! 

    当调用 string.Join() 合并非字符串的数值时,它实际上会让每一个元素 ToString().  也就是说这些元素 ToString() 的定义是符合你的需求的才行 – 虽然大部分asp.net库中的类型都已经有了.

    举例子:

       
    // 合并整型 "1,2,3,4,5,6,7,8,9,10"
    var numsFromOneToTen = string.Join(",", Enumerable.Range(1, 10));
    // 合并不同类型的数值 ==> "1-3.1415927-9/16/2011 12:52:22 PM"
    var variousObjects = string.Join("-", new object[] { 1, 3.1415927, DateTime.Now });
    最后, Join() 明显是支持 IEnumerable<T> 和 object[], string[]:
     
    string[] arr = { "one", "two", "three" }; Console.WriteLine(string.Join(",", arr)); 
    //.net 4.0 中你可以直接列出所有数值,不必要生成数组 var numsFromOneToTen = string.Join(",", "A", "B", "C", "D", "E");
    var variousObjects = string.Join("-", 1, 3.1415927, DateTime.Now);

    结论

    如果你想将一个字符串分割或者串联一些元素到一个字符串,想想能否用 Split()Join().  它们在很多方面都非常有用.
  • 相关阅读:
    asp.net c#中FCKeditor的详细配置及精简操作
    winform C#中Byte与String的转换方法,相互转换
    wp,wordpress博客怎样让首页的文章默认显示摘要
    vs2005 c#鼠标悬停高亮显示在gridview中
    我国CN域名一年减少600万个 全要求实名注册
    c# winform未能找到引用的组件“Excel”的解决办法
    asp.net c#中使用FCKeditor的方法,版本2.66
    C# 注册表操作类(完整版)winform
    c#如何打印picturebox里的图片,winform怎样打印picturebox里的图片
    imageready 如何保存为gif格式图片总结.
  • 原文地址:https://www.cnblogs.com/1175429393wljblog/p/4815694.html
Copyright © 2011-2022 走看看