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 转数字
- 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 方法尝试将字符串转换为数字,并返回一个布尔值表示是否成功。
csharp
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}";
示例代码
下面的示例代码展示了如何进行这两种转换:
csharp
using System;
public class StringNumberConversion
{
public static void Main()
{
// String to Number
string 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