C# 中奇妙的函数–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(). 它们在很多方面都非常有用.
C# 中奇妙的函数–String Split 和 Join的更多相关文章
- Python中字符串操作函数string.split('str1')和string.join(ls)
Python中的字符串操作函数split 和 join能够实现字符串和列表之间的简单转换, 使用 .split()可以将字符串中特定部分以多个字符的形式,存储成列表 def split(self, * ...
- C# 中奇妙的函数–7. String Split 和 Join
很多时候处理字符串数据,比如从文件中读取或者存入 - 我们可能需要加入分隔符(如CSV文件中的逗号),或使用一个分隔符来合并字符串序列. 很多人都知道使用split()的方法,但使用与其对应的Join ...
- C# 中奇妙的函数–6. 五个序列聚合运算(Sum, Average, Min, Max,Aggregate)
今天,我们将着眼于五个用于序列的聚合运算.很多时候当我们在对序列进行操作时,我们想要做基于这些序列执行某种汇总然后,计算结果. Enumerable 静态类的LINQ扩展方法可以做到这一点 .就像之前 ...
- Lua 自定义函数string.split
function string.split(str, delimiter) if str==nil or str=='' or delimiter==nil then return ...
- python中字符串拆分与合并——split()、join()、strip()和replace()
Python3 split()方法 描述split()通过指定分隔符对字符串进行切片,如果参数num 有指定值,则仅分隔 num 个子字符串 语法split()方法语法: str.split(str= ...
- String Split 和 Join
很多时候处理字符串数据,比如从文件中读取或者存入 - 我们可能需要加入分隔符(如CSV文件中的逗号),或使用一个分隔符来合并字符串序列. 很多人都知道使用split()的方法,但使用与其对应的Join ...
- C# 中奇妙的函数–8. String Remove() 和 Replace()
http://www.cnblogs.com/multiplesoftware/archive/2011/09/27/2192710.html 当对字符串进行操作时,我们经常要删除或者是替换一部分子字 ...
- js中字符替换函数String.replace()使用技巧
定义和用法 replace() 方法用于在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串. 语法 stringObject.replace(regexp/substr,replac ...
- JS 中的substring ,substr ,slice,split,join
substr with different arguments passed in: str.substring(startNum,stopNum ); str.slice(startNum,stop ...
随机推荐
- centos7.0下增加swap分区大小
承接上篇文章扩容磁盘空间后增加根分区的大小后,来扩容swap分区的空间 检查当前的swap分区情况 # free -m # free -g [root@localhost ~]# free -m to ...
- MySQL 删除重复数据实例
如何删除重复数据 业务场景:删除评论表中对同一订单同一商品的重复评论,只保留最早的一条. 查看是否存在对于同一订单同一商品的重复评论. SELECT order_id,product_id,COUNT ...
- scala使用hbase新api
import org.apache.hadoop.hbase.{HTableDescriptor,HColumnDescriptor,HBaseConfiguration,TableName} imp ...
- Shiro 权限标签
Shiro 权限标签: 导入标签库: <%@taglib prefix="shiro" uri="http://shiro.apache.org/tags" ...
- BOM跟DOM的区别和关联
BOM 1. BOM是Browser Object Model的缩写,即浏览器对象模型. 2. BOM没有相关标准. 3. BOM的最根本对象是window. 从1可以看出来:BOM和浏览器关系密切. ...
- SpringBoot入门 (十) 发送邮件
本文记录学习在SpringBoot中发送邮件. 一 邮件发送过程 发送邮件是一个我们在项目中经常会用到的功能,如在用户注册时发送验证码,账户激活等都会用到.完整的一个邮件发送过程主要包含以下几个步骤: ...
- windows设置电脑的固定IP
当有需要的人往往想要固定自己的IP进行测试,在我通过手机代理来录制测试带宽时不想因为IP经常变更而影响到我的测试 因此,我想要固定自己的IP 1.想要固定IP说明自己的IP设置成了自动获取方式,这样连 ...
- WPF Blend 一个动画结束后另一个动画开始执行(一个一个执行)
先说明思路:一个故事版Storyboard,两个双精度动画帧DoubleAnimation. 一个一个执行的原理:控制动画开始时间(例如第一个动画用时2秒,第二个动画就第2秒起开始执行.) XAML: ...
- 使用EnterpriseLibrary插入Oracle CLOB数据
转自:http://www.programgo.com/article/20022195177/ http://blog.csdn.net/ddxkjddx/article/details ...
- 编辑器:IDE(深坑不填)
http://top.jobbole.com/37542/ Facebook 和 GitHub 两大巨头联手推出 Atom-IDE 2017-9-22 https://www.zhihu.com/qu ...

