C# 中奇妙的函数–7. 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(',');
得到的结果如下
对待同样的字符串,我们使用 ‘,’ 和 ‘ ‘ (空格):
string testString = "James Hare,1001 Broadway Ave,St. Louis,MO,63101";
//传递一个数组作为分割的标记
string[] results = testString.Split(new[] { ',', ' ' });
//或者在4.0 下可以直接这样传递
results = testString.Split(',', ' ');
得到下面的结果:
使用 string 作为分割符用法是基本一样的:
string testString = "James Hare,,1001 Broadway Ave,St. Louis,MO,63101";
string[] results = testString.Split(new[] { ",," }, StringSplitOptions.None);
结果:
注意在这里我们必须要提供一个 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("\tElement {0}: \"{1}\"", i, results[i]);
}
使用限制数量的结果是:
注意第二个元素还包含了’,’。
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(Alex Song)
参考翻译自 C#/.NET Little Wonders: The String Split() and Join() methods
http://www.cnblogs.com/multiplesoftware/archive/2011/09/17/2179380.html
C# 中奇妙的函数–7. String Split 和 Join的更多相关文章
- C# 中奇妙的函数–8. String Remove() 和 Replace()
http://www.cnblogs.com/multiplesoftware/archive/2011/09/27/2192710.html 当对字符串进行操作时,我们经常要删除或者是替换一部分子字 ...
- C# 中奇妙的函数–String Split 和 Join
很多时候处理字符串数据,比如从文件中读取或者存入 - 我们可能需要加入分隔符(如CSV文件中的逗号),或使用一个分隔符来合并字符串序列. 很多人都知道使用split()的方法,但使用与其对应的Join ...
- C# 中奇妙的函数–6. 五个序列聚合运算(Sum, Average, Min, Max,Aggregate)
今天,我们将着眼于五个用于序列的聚合运算.很多时候当我们在对序列进行操作时,我们想要做基于这些序列执行某种汇总然后,计算结果. Enumerable 静态类的LINQ扩展方法可以做到这一点 .就像之前 ...
- String Split 和 Join
很多时候处理字符串数据,比如从文件中读取或者存入 - 我们可能需要加入分隔符(如CSV文件中的逗号),或使用一个分隔符来合并字符串序列. 很多人都知道使用split()的方法,但使用与其对应的Join ...
- [Java] String.Split 方法的6个重载函数
String.Split 方法有6个重载函数: 程序代码 1) public string[] Split(params char[] separator) 2) public string[] Sp ...
- C#语言之“String.Split”的使用【转】
String.Split 方法有6个重载函数: 1) public string[] Split(params char[] separator) 2) public string[] Split(c ...
- Python中字符串操作函数string.split('str1')和string.join(ls)
Python中的字符串操作函数split 和 join能够实现字符串和列表之间的简单转换, 使用 .split()可以将字符串中特定部分以多个字符的形式,存储成列表 def split(self, * ...
- java String.split()函数的用法分析
java String.split()函数的用法分析 栏目:Java基础 作者:admin 日期:2015-04-06 评论:0 点击: 3,195 次 在java.lang包中有String.spl ...
- String.Split()函数
我们在上次学习到了 String.Join函数(http://blog.csdn.net/zhvsby/archive/2008/11/28/3404704.aspx),当中用到了String.SPl ...
随机推荐
- LINUX USB MASS STORAGE DRIVER流程图
- Spring Boot 部署与服务配置
Spring Boot 其默认是集成web容器的,启动方式由像普通Java程序一样,main函数入口启动.其内置Tomcat容器或Jetty容器,具体由配置来决定(默认Tomcat).当然你也可以将项 ...
- Chapter 5. Label and Entry Widgets 标签和输入部件
Chapter 5. Label and Entry Widgets 标签和输入部件 有时候,你需要用户输入特定的信息,比如他们的名字,地址或者 甚至序号. 简单的方式来实现这个是使用Enry 部件 ...
- project小技巧:快捷键
project小技巧:快捷键 任务升级 ALT + SHIFT + 向左键 任务降级 ALT + SHIFT + 向右键 滚动到表头(第一个任务) Ctr ...
- 【学习总结】autostart 与 init
学习总结/etc/xdg/autostart/xxx.desktop,是开机从登录界面跳转到桌面启动的,可以拿到桌面环境变量,用户id是“普通用户”,如果自启动的程序文件所属者为root,则需要 执行 ...
- 类加载器与methodinterceptor接口
类加载器: JVM将类加载过程分为三个步骤: 装载(Load):加载二进制文件 链接(Link)进行了验证:验证文件准确性 准备:将静态变量进行分配内存,初始化其默认值. 解析:符号引用转换为直接引用 ...
- android笔记1——开发环境的搭建
Long Long ago...已经成为了历史,我还是要说出一个真相:早年前,那时候,android还不被大众所认知的时候,当然开发人员也没不像如今那样趋于饱和状态.一位大牛前辈,也是我的学长,那时候 ...
- 你知道为什么Xcode6中Swift没有智能提示和自己主动补全功能吗 ?
你知道为什么Xcode6中Swift没有智能提示和自己主动补全功能吗 ? 长沙戴维营教育将为你解开这个巨大的谜团大BUG! http://www.ubuntucollege.cn/course/29/ ...
- Swift版音乐播放器(简化版),swift音乐播放器
这几天闲着也是闲着,学习一下Swift的,于是到开源社区Download了个OC版的音乐播放器,练练手,在这里发扬开源精神, 希望对大家有帮助! 这个DEMO里,使用到了 AudioPlayer(对音 ...
- meta 标签整理
<!-- 声明文档 --> <meta charset='utf-8'> <!-- 指示IE以目前可用的最高模式显示内容 --> <meta http-equ ...