`
baobeituping
  • 浏览: 1064715 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

C# 中奇妙的函数. String Split 和 Join

    博客分类:
  • .NET
 
阅读更多

很多时候处理字符串数据,比如从文件中读取或者存入 - 我们可能需要加入分隔符(如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("\tElement {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);
分享到:
评论

相关推荐

    C#中Split用法

    ### C#中的`Split`方法详解 在C#编程语言中,`Split`方法是非常实用且常用的一个功能,主要用于将字符串根据指定的分隔符分割成一个字符串数组。本文将详细解析`Split`方法的不同用法及其应用场景。 #### 1. 基本...

    C#中的常用函数.pdf

    在C#编程语言中,了解并熟练使用常用函数对于编写高效和可维护的...这些函数只是C#中众多功能的一部分,熟练掌握它们将大大提高你的编程效率和代码质量。在实际开发中,还需要结合其他类库和框架来实现更复杂的功能。

    C#(.NET)常用函数汇总

    C#拥有一系列内置的函数和类库,帮助开发者高效地实现功能。本篇文章将深入探讨C#中的一些常用函数,以提升您的编程效率。 1. **字符串操作函数** - `string.IsNullOrEmpty(string str)`:检查字符串是否为null或...

    数据结构示例程序(C#语言描述).zip

    12. 字符串处理:C#的String类提供了丰富的字符串操作方法,如Split、Join、Substring、Replace等,支持正则表达式操作。 了解和熟练掌握这些数据结构及其操作,是提升C#编程能力和解决问题的关键。通过实际编写和...

    c# string操作,去除重复的串

    C#中的`string`类提供了丰富的内置方法,如`Substring()`, `Trim()`, `ToLower()`, `ToUpper()`, `Replace()`, `Split()`, `Join()`, `IndexOf()`, `LastIndexOf()`等,用于字符串的截取、清理、转换、查找和分割等...

    C#字符串处理的所有函数

    C#提供了丰富的字符串处理函数,使得开发者可以方便地操作和处理字符串。本篇笔记将详细介绍C#中涉及字符串的各种函数,帮助你全面掌握字符串处理的技巧。 1. **字符串创建与初始化** 在C#中,字符串是不可变的...

    C#.net常用函数和办法集

    在C#.NET编程中,掌握常用的函数和方法是至关重要的,因为它们构成了程序的基础和核心。C#.NET是一门强大的面向对象的编程语言,广泛应用于Windows应用程序开发、Web开发、游戏开发等领域。以下是对C#.NET中一些常用...

    C#常用函数方法集

    在C#编程语言中,函数和方法是构建可重用代码和模块化程序的基础。C#的方法是包含在类或结构体中的一组指令,它们执行特定任务并可能接收输入参数,也可能返回值。本资源“C#常用函数方法集”提供了一套常用的函数和...

    C#常用的42个类.zip

    3. **字符串操作2.txt**:除了基础的字符串操作,C#还有许多高级功能,如正则表达式(Regex)用于复杂模式匹配,StringBuilder用于高效构建大型字符串,以及String.Split()、Join()等方法处理字符串数组。...

    C#源码大全 C#C#C#C#C#C#C#C#C#

    9. **字符串操作**:C#中的String类是不可变的,提供了丰富的字符串处理方法,如Split、Join、Replace、Substring等,同时Regex类支持正则表达式操作,用于复杂文本匹配和替换。 这些知识点构成了C#编程的基础,...

    C# csv 读取 写出

    本篇文章将深入探讨如何在C#中实现CSV文件的读取和写出,同时也会提及在VB.NET中的类似方法。 ### CSV文件概述 CSV文件以纯文本形式存储表格数据,每一行代表一行记录,每列数据之间通过特定的分隔符分隔,通常是...

    C#字符串操作

    在C#编程中,字符串(String)是至关重要的数据类型,用于处理文本信息。字符串是由一个或多个字符组成的序列,它们可以表示任何文本,比如姓名、地址、文章等。本篇文章将深入探讨C#中的字符串操作,包括创建、访问、...

    StringExtension帮助类

    在.NET编程环境中,扩展方法是一种强大的工具,可以为已存在的...通过阅读和理解`StringExtension.cs`和`StringExtension02.cs`文件中的代码,我们可以学习到如何设计和实现这样的实用工具类,从而提升我们的编程技能。

    C#数据保存至csv文件.zip_C# 新建CSV_C# csv_C#数据存储_csv_读写CSV

    总结,C#中处理CSV文件的基本步骤包括创建、读取和写入操作,可以通过`StreamWriter`和`StreamReader`实现。对于更复杂的需求,可以考虑使用第三方库来增强功能。了解这些基础后,你就能在实际项目中灵活地管理和...

    C#常用公共类极其函数[借鉴].pdf

    在C#编程语言中,有一些常用的公共类和函数,它们为开发者提供了丰富的功能,使得代码编写更加便捷。这里我们将深入探讨三个关键的类别:算数类(System.Math),字符串类(System.String)以及转换类(System.Convert)。...

    c#去掉字符串中所以的空格

    在C#编程语言中,处理字符串是常见的任务之一,其中包括去除字符串中的空格。这个话题对于初学者和经验丰富的开发者都很重要,因为处理文本数据时,我们经常需要清理或格式化字符串,确保它们符合特定的需求。本文将...

    C#字符串和正则表达式参考手册

    5. 链接操作:`string.Join()`用于将数组或集合中的元素连接成一个字符串。 6. 常用方法:`ToLower()`和`ToUpper()`用于大小写转换,`Trim()`去除两端空白,`Replace()`替换指定字符或子串,`IndexOf()`和`...

    高效的忽略大小写的字符串替换(Replace)函数[定义].pdf

    这个方法的原理是使用Split()和Join()方法,将字符串分割成子字符串,然后将其合并成新的字符串。这个方法的效率非常高,但需要引用Microsoft.VisualBasic.DLL库。 6. 使用Reflector和Denis Bauer's Reflector....

    C#优化字符串操作

    【C#优化字符串操作】 1. **Convert.ToInt32 与 Int32.Parse的比较** - `Convert.ToInt32`方法在处理无法转换...在C#开发中,理解这些字符串操作的优化技巧和不同方法的适用场景,有助于编写出更高效、更稳定的代码。

    经典的C# Asp.Net代码

    C#的System.String类提供了丰富的静态方法,如Join、Replace、Split等,用于处理字符串。同时,正则表达式(Regex)是处理复杂字符串模式匹配的强大工具,可以用于验证输入、提取信息等。 "支持文件拖拽"在现代桌面...

Global site tag (gtag.js) - Google Analytics