当前位置: 首页 > news >正文

c#中字符串处理的技巧集合

字符串的处理可以算得是编程中最高频的动作之一,如是否有空的判断,对特定字符的过滤、list、dictionary、list 、List与字符串数字之间的转换等。本文将这些常见的转换总结如下,并给出实例代码。

文章目录

  • 一、判断是否为空
    • 方法一 :IsNullOrEmpty
    • 方法二: IsNullOrWhiteSpace
  • 二、与数组的互转
    • 1. List<T> 转 Array
      • 方法一:使用 ToArray() 方法
      • 方法二:使用 LINQ 的 ToArray() 扩展方法
    • 2. Array 转 List<T>
      • 方法一:使用 ToList() 方法
      • 方法二:使用 Array.ForEach 方法
  • 三、与list的互转
    • 1. String 转 List<string>
      • 方法一:使用 Split 方法
      • 方法二:使用 LINQ 的 Split 和 ToList
    • 2. List<string> 转 String
      • 方法一:使用 string.Join
      • 方法二:使用 LINQ 的 Aggregate
    • 注意事项
  • 五、与日期互转
    • 1. String 转 DateTime
      • 方法一:使用 DateTime.Parse 或 DateTime.ParseExact
      • 方法二:使用 DateTime.TryParse 或 DateTime.TryParseExact
    • 2. DateTime 转 String
      • 方法一:使用 DateTime.ToString
    • 注意事项
  • 六、与数字互转
    • 1. String 转数字
      • 方法一:使用 Parse 方法
      • 方法二:使用 TryParse 方法
    • 2. 数字转 String
      • 方法一:使用 ToString 方法
      • 方法二:使用字符串插值
    • 4、转为固定格式
  • 七、字符串(string)和字符数组(char[])之间的转换
    • 1. String 转 Char Array
    • 方法一:使用 ToCharArray 方法
    • 2. Char Array 转 String
      • 方法一:使用 new String 构造函数
      • 示例代码
      • 注意事项

文章原出处: https://blog.csdn.net/haigear/article/details/142279781

一、判断是否为空

最土最不安全的方法就是判断string变量是否为null或者stringvar==“”,这里不提倡,所以不会将其列为常规的方法之一。

方法一 :IsNullOrEmpty

string.IsNullOrEmpty

众所周知,它判断字符串是否为:null或者string.Empty。如果是如"\t"这样的字符就返回false了,为了达到判断和过滤这些特殊格式字符的这些功能,就要辅以replace、splite()、Trim()和Length来解决长度和过滤空格或者回车符的问题。

方法二: IsNullOrWhiteSpace

string.IsNullOrWhiteSpace

它的功能相当于string.IsNullOrEmpty和str.Trim().Length总和,他将字符串给Char.IsWhiteSpace为ture的任何字符都将是正确的。这个方法会比调用上述两个方法的性能更高而且简洁,所以在判断这个功能时使用起来会更顺手,见下列实例代码:

using System;
public class Example
{public static void Main(){string[] values = { null, String.Empty, "ABCDE", new String(' ', 20), "  \t   ", new String('\u2000', 10) };foreach (string value in values)Console.WriteLine(String.IsNullOrWhiteSpace(value));}
}

输出结果

//       True
//       True
//       False
//       True
//       True
//       True

如果的输入来自combbox这样的非键盘型输入使用string.IsNullOrEmpty就足够了,但如果是textBox这种键盘输入型控件,或者来自某个文件,用string.IsNullOrWhiteSpace安全性会更高。
文章原出处:https://blog.csdn.net/haigear/article/details/142279781

二、与数组的互转

在C#中,数组和集合(如List)之间的转换是常见的需求。以下是一些常见的转换方法:

1. List 转 Array

方法一:使用 ToArray() 方法

这是最直接的方法,适用于任何实现了 IEnumerable 接口的集合,包括 List。

List<int> myList = new List<int> { 1, 2, 3, 4, 5 };
int[] myArray = myList.ToArray();

方法二:使用 LINQ 的 ToArray() 扩展方法

如果你的项目中已经引用了 System.Linq 命名空间,可以使用 LINQ 的 ToArray() 方法。

using System.Linq;List<int> myList = new List<int> { 1, 2, 3, 4, 5 };
int[] myArray = myList.ToArray();

2. Array 转 List

方法一:使用 ToList() 方法

这是最直接的方法,适用于任何数组。

int[] myArray = { 1, 2, 3, 4, 5 };
List<int> myList = myArray.ToList();

方法二:使用 Array.ForEach 方法

虽然不常用,但你可以使用 Array.ForEach 方法结合 List 的构造函数来实现转换。

int[] myArray = { 1, 2, 3, 4, 5 };
List<int> myList = new List<int>();
Array.ForEach(myArray, item => myList.Add(item));

注意事项
使用 ToArray() 和 ToList() 方法时,会创建新的数组或列表实例,原始集合不会被修改。
如果你频繁在数组和列表之间转换,可能需要考虑数据结构的选择,以优化性能和内存使用。
文章原出处:https://blog.csdn.net/haigear/article/details/142279781

三、与list的互转

在C#中,字符串(string)和列表(List)之间的转换通常涉及将字符串分割成多个部分,或者将列表中的元素合并成一个字符串。以下是几种常见的转换方法:

1. String 转 List

方法一:使用 Split 方法

Split 方法可以根据指定的分隔符将字符串分割成字符串数组,然后可以将数组转换为列表。

string str = "apple,banana,cherry";
List<string> list = str.Split(',').ToList();

方法二:使用 LINQ 的 Split 和 ToList

如果你的项目中已经引用了 System.Linq 命名空间,可以使用 LINQ 的 Split 方法和 ToList 方法来实现。

using System.Linq;string str = "apple,banana,cherry";
List<string> list = str.Split(',').ToList();

2. List 转 String

方法一:使用 string.Join

string.Join 方法可以将字符串集合合并成一个单一的字符串,元素之间可以插入指定的分隔符。

List<string> list = new List<string> { "apple", "banana", "cherry" };
string str = string.Join(",", list);

方法二:使用 LINQ 的 Aggregate

如果你的项目中已经引用了 System.Linq 命名空间,可以使用 LINQ 的 Aggregate 方法来实现。

using System.Linq;List<string> list = new List<string> { "apple", "banana", "cherry" };
string str = list.Aggregate((current, next) => current + "," + next);

注意事项

1、使用 Split 方法时,如果字符串为空或仅包含分隔符,Split 方法将返回一个空数组,而不是 null。因此,你可能需要使用string.IsNullOrEmpty来检查结果是否为空。
2、string.Join 方法在合并字符串时不会在最后一个元素后添加分隔符,这使得它非常适合生成如 CSV 格式的数据。
文章原出处:https://blog.csdn.net/haigear/article/details/142279781

五、与日期互转

日期和字符串互转在数据库的sql语句中特别重要,如果格式不对sql语句就可能报错。
在C#中,字符串和日期时间(DateTime)之间的转换通常涉及解析和格式化操作。以下是一些常见的转换方法:

1. String 转 DateTime

方法一:使用 DateTime.Parse 或 DateTime.ParseExact

DateTime.Parse 方法尝试解析字符串为 DateTime 对象。DateTime.ParseExact 允许你指定日期时间的确切格式。

string dateString = "2023-01-01";
DateTime dateTime = DateTime.Parse(dateString);
// 使用指定格式
string formattedDate = "01/01/2023";
DateTime dateTimeExact = DateTime.ParseExact(formattedDate, "dd/MM/yyyy", null);

方法二:使用 DateTime.TryParse 或 DateTime.TryParseExact

DateTime.TryParse 和 DateTime.TryParseExact 方法尝试解析字符串为 DateTime 对象,但它们不会抛出异常,而是返回一个布尔值表示是否成功。

string dateString = "2023-01-01";
DateTime dateTime;
bool success = DateTime.TryParse(dateString, out dateTime);if (success)
{Console.WriteLine("转换成功,日期为: " + dateTime.ToString());
}
else
{Console.WriteLine("转换失败");
}
// 使用指定格式
string formattedDate = "01/01/2023";
DateTime dateTimeExact;
success = DateTime.TryParseExact(formattedDate, "dd/MM/yyyy", null, System.Globalization.DateTimeStyles.None, out dateTimeExact);if (success)
{Console.WriteLine("转换成功,日期为: " + dateTimeExact.ToString());
}
else
{Console.WriteLine("转换失败");
}

2. DateTime 转 String

方法一:使用 DateTime.ToString

DateTime.ToString 方法将 DateTime 对象格式化为字符串。

DateTime dateTime = new DateTime(2023, 1, 1);
string dateString = dateTime.ToString(); // 默认格式
Console.WriteLine("日期转换为字符串: " + dateString);
// 使用指定格式
string formattedString = dateTime.ToString("yyyy-MM-dd");
Console.WriteLine("日期转换为指定格式字符串: " + formattedString);

下面的示例代码综合起来展示了如何进行这两种格式之间的相互转换:

using System;
using System.Globalization;public class DateTimeConversion
{public static void Main(){// String to DateTimestring dateString = "2023-01-01";if (DateTime.TryParse(dateString, out DateTime dateTime)){Console.WriteLine("转换成功,日期为: " + dateTime.ToString());}else{Console.WriteLine("转换失败");}// DateTime to StringdateTime = new DateTime(2023, 1, 1);string formattedString = dateTime.ToString("yyyy-MM-dd");Console.WriteLine("日期转换为指定格式字符串: " + formattedString);}
}

注意事项

使用 Parse 和 ToString 方法时,如果字符串格式不正确或指定的格式与 DateTime 对象不匹配,会抛出异常。
TryParse 和 TryParseExact 方法是更安全的选择,因为它们不会抛出异常,而是返回一个布尔值表示是否成功。
在格式化日期时,你可以使用标准的日期时间格式字符串或自定义格式字符串来满足不同的格式需求。
文章原出处:https://blog.csdn.net/haigear/article/details/142279781

六、与数字互转

在C#中,字符串(string)和数字(如 int, long, float, double 等)之间的转换可以通过多种方法实现。我们这里用int作为范例演示给大家:

1. String 转数字

方法一:使用 Parse 方法

Parse 方法可以将字符串转换为指定的数字类型。

string strNumber = "123";
int number = int.Parse(strNumber);

方法二:使用 TryParse 方法

TryParse 方法尝试将字符串转换为数字,并返回一个布尔值表示是否成功。

string strNumber = "123";
int number;
bool success = int.TryParse(strNumber, out number);if (success)
{Console.WriteLine("转换成功,数字为: " + number);
}
else
{Console.WriteLine("转换失败");
}

2. 数字转 String

方法一:使用 ToString 方法

ToString 方法可以将数字转换为字符串。

int number = 123;
string strNumber = number.ToString();

方法二:使用字符串插值

字符串插值是C# 6.0引入的一个特性,可以方便地将表达式嵌入字符串字面量中。

int number = 123;
string strNumber = $"{number}";

下面的示例代码展示了如何进行这两种转换:

using System;public class StringNumberConversion
{public static void Main(){// String to Numberstring strNumber = "123";if (int.TryParse(strNumber, out int number)){Console.WriteLine("转换成功,数字为: " + number);}else{Console.WriteLine("转换失败");}// Number to Stringnumber = 123;string str = number.ToString();Console.WriteLine("数字转换为字符串: " + str);}
}

注意事项
使用 Parse 方法时,如果字符串不是有效的数字格式,会抛出 FormatException 异常。
TryParse 方法是更安全的选择,因为它不会抛出异常,而是返回一个布尔值表示是否成功。
当将数字转换为字符串时,ToString 方法和字符串插值都可以使用,但字符串插值在某些情况下更简洁易读。

4、转为固定格式

数字转为固定格式的输出也是很常见的,如下面的固定格式的字符串输出:

string.Format("the value is {0,7:f3}",123.45);
//结果 the value is 123.450

这里将常见的格式输出列表如下以备参考:

说明示例输出
C货币2.5.ToString(“C”)¥2.50
D十进制数25.ToString(“D5”)00025
E科学型25000.ToString(“E”)2.500000E+005
F固定点25.ToString(“F2”)25.00
G常规2.5.ToString(“G”)2.5
N数字2500000.ToString(“N”)2,500,000.00
X十六进制255.ToString(“X”)FF

七、字符串(string)和字符数组(char[])之间的转换

在C#中,字符串(string)和字符数组(char[])之间的转换可以通过多种方法实现。以下是一些常见的转换方法:

1. String 转 Char Array

方法一:使用 ToCharArray 方法

ToCharArray 方法将字符串中的所有字符复制到新的字符数组中。

string str = "Hello";
char[] charArray = str.ToCharArray();

2. Char Array 转 String

方法一:使用 new String 构造函数

new String 构造函数接受一个字符数组作为参数,并创建一个新的字符串实例。

char[] charArray = { 'H', 'e', 'l', 'l', 'o' };
string str = new String(charArray);

示例代码

下面的示例代码展示了如何进行这两种转换:

csharp
using System;public class StringCharConversion
{public static void Main(){// String to Char Arraystring str = "Hello";char[] charArray = str.ToCharArray();Console.WriteLine("Char Array from String:");foreach (char c in charArray){Console.Write(c + " ");}Console.WriteLine();// Char Array to StringcharArray = new char[] { 'H', 'e', 'l', 'l', 'o' };str = new String(charArray);Console.WriteLine("\nString from Char Array: " + str);}
}

注意事项

当使用 ToCharArray 方法时,它会创建一个新的字符数组,原字符串不会被修改。
使用 new String 构造函数时,它会根据提供的字符数组创建一个新的字符串实例。

文章随时可能更新,请关注文章原出处:https://blog.csdn.net/haigear/article/details/142279781

相关文章:

  • socket网络编程
  • MySQL高阶2004-职员招聘人数
  • 713. 乘积小于 K 的子数组 滑动窗口
  • Python Pandas数据处理效率提升指南
  • 【笔记】自动驾驶预测与决策规划_Part4_时空联合规划
  • 【GUI设计】基于Matlab的图像去噪GUI系统(8),matlab实现
  • 构建企业数字化转型的战略基石——TOGAF框架的深度解析
  • 物理学基础精解【26】
  • 录屏+GIF一键生成,2024年费软件大揭秘
  • Kubernetes 中 Pod 和 Node 的关系详解
  • 代码整洁之道 — 1 命名规范
  • C++——有3个学生,每个学生的数据包括:学号、姓名、3门课的成绩,从键盘输入三个学生的数据。要求打印学生三门课的平均分。
  • SpringBoot使用EasyPoi根据模板导出word or pdf
  • 什么是网络准入控制系统?2024年有哪些好用的网络准入控制系统?
  • 2024/10/1 操作系统大题专训之文件
  • HTML中设置input等文本框为不可操作
  • JavaWeb(学习笔记二)
  • k8s如何管理Pod
  • MyEclipse 8.0 GA 搭建 Struts2 + Spring2 + Hibernate3 (测试)
  • PermissionScope Swift4 兼容问题
  • 阿里云ubuntu14.04 Nginx反向代理Nodejs
  • 关于Flux,Vuex,Redux的思考
  • 基于Javascript, Springboot的管理系统报表查询页面代码设计
  • 前端js -- this指向总结。
  • 推荐一个React的管理后台框架
  • 1.Ext JS 建立web开发工程
  • #### go map 底层结构 ####
  • #预处理和函数的对比以及条件编译
  • (1)(1.19) TeraRanger One/EVO测距仪
  • (AtCoder Beginner Contest 340) -- F - S = 1 -- 题解
  • (C11) 泛型表达式
  • (C语言)输入自定义个数的整数,打印出最大值和最小值
  • (vue)el-cascader级联选择器按勾选的顺序传值,摆脱层级约束
  • (附源码)spring boot儿童教育管理系统 毕业设计 281442
  • (附源码)spring boot基于小程序酒店疫情系统 毕业设计 091931
  • (十六)视图变换 正交投影 透视投影
  • (四) Graphivz 颜色选择
  • (四)事件系统
  • (一)为什么要选择C++
  • (转载)微软数据挖掘算法:Microsoft 时序算法(5)
  • .jks文件(JAVA KeyStore)
  • .NET COER+CONSUL微服务项目在CENTOS环境下的部署实践
  • .NET Conf 2023 回顾 – 庆祝社区、创新和 .NET 8 的发布
  • .NET Framework 的 bug?try-catch-when 中如果 when 语句抛出异常,程序将彻底崩溃
  • .NET Standard 的管理策略
  • .net 获取url的方法
  • .NET 事件模型教程(二)
  • .skip() 和 .only() 的使用
  • [ 隧道技术 ] cpolar 工具详解之将内网端口映射到公网
  • [.NET 即时通信SignalR] 认识SignalR (一)
  • [acm算法学习] 后缀数组SA
  • [Android学习笔记]ScrollView的使用
  • [BZOJ1010] [HNOI2008] 玩具装箱toy (斜率优化)
  • [C#]winform基于opencvsharp结合Diffusion-Low-Light算法实现低光图像增强黑暗图片变亮变清晰
  • [C#学习笔记]Newtonsoft.Json