目录
一、处理数字
常见的数据类型之一是数字,.NET用于处理数字的最常见类型
示例类型 | 描述 |
---|---|
int | 用于表示整数值,没有小数部分 |
byte | 用于表示8位无符号整数 |
double | 用于表示双精度浮点数 |
decimal | 用于表示高精度小数 |
BigInteger | 用于表示任意大小的整数 |
C#处理大的整数
处理大的整数通常会使用BigInteger类。这个类允许你表示和操作任意大小的整数,而不受内置整数类型的限制。要使用BigInteger类,你需要导入System.Numerics命名空间,然后就可以创建BigInteger实例并进行各种数学运算了。
csharp
using System;
using System.Numerics;
class Program
{
static void Main()
{
BigInteger bigNum1 = BigInteger.Parse("123456789012345678901234567890");
BigInteger bigNum2 = BigInteger.Parse("987654321098765432109876543210");
BigInteger result = bigNum1 * bigNum2;
Console.WriteLine(result);
}
}
C#处理复数
你可以使用System.Numerics命名空间中的Complex类来处理复数。Complex类表示一个具有实部和虚部的复数,并提供了一些方法来进行复数运算,如加法、减法、乘法和除法等。
csharp
using System;
using System.Numerics;
class Program
{
static void Main()
{
Complex complex1 = new Complex(3, 4); // 表示实部为3,虚部为4的复数
Complex complex2 = new Complex(1, 2); // 表示实部为1,虚部为2的复数
Complex sum = Complex.Add(complex1, complex2); // 复数相加
Complex difference = Complex.Subtract(complex1, complex2); // 复数相减
Complex product = Complex.Multiply(complex1, complex2); // 复数相乘
Complex quotient = Complex.Divide(complex1, complex2); // 复数相除
Console.WriteLine("Sum: " + sum);
Console.WriteLine("Difference: " + difference);
Console.WriteLine("Product: " + product);
Console.WriteLine("Quotient: " + quotient);
}
}
二、处理文本
文本类型 | 说明 |
---|---|
char | 表示单个Unicode字符。它是值类型。 |
string | 表示一系列字符。它是引用类型,被广泛用于处理文本数据。 |
StringBuilder | 一个可变的字符序列。在需要频繁修改字符串时非常有用。 |
StringReader | 允许以异步方式从字符串中读取数据。通常用于将文本数据作为流进行读取。 |
StringWriter | 允许以异步方式向字符串中写入数据。通常用于将文本数据作为流进行写入。 |
获取字符串长度
使用 Length 属性来获取一个字符串的长度。这个属性返回字符串中字符的数量,而不是字节数或者编码单元的数量。
csharp
string str = "Hello, World!";
int length = str.Length;
Console.WriteLine("The length of the string is: " + length);
获取字符串中的字符
在C#中,使用字符串的索引来获取特定位置的字符。例如,如果您有一个字符串变量 str,您可以通过 str[0] 来获取第一个字符,以此类推。
csharp
string str = "Hello, world!";
char firstChar = str[0]; // 获取第一个字符'H'
char fifthChar = str[5]; // 获取第六个字符','
拆分字符串
使用 Split 方法来拆分字符串。这个方法接受一个包含分隔符的字符数组作为参数,并返回一个字符串数组。
csharp
string str = "apple,orange,banana";
string[] fruits = str.Split(','); // 使用逗号作为分隔符来拆分字符串
foreach (string fruit in fruits)
{
Console.WriteLine(fruit);
}
获取字符串的一部分
使用字符串的 Substring 方法来获取字符串的一部分。该方法接受一个起始索引和一个长度,并返回从起始索引开始指定长度的子字符串。
csharp
string str = "Hello, world!";
string part = str.Substring(7, 5); // 从索引 7 开始,获取长度为 5 的子字符串
Console.WriteLine(part); // 输出 "world"
检查字符串的内容
可以使用字符串的 Contains 、StartsWith、EndsWith方法来检查字符串是否包含特定的子字符串。此方法返回一个布尔值,指示原始字符串中是否存在指定的子字符串。
csharp
string str = "Hello, world!";
bool containsHello = str.Contains("Hello"); // 检查字符串是否包含"Hello"
bool containsGoodbye = str.Contains("Goodbye"); // 检查字符串是否包含"Goodbye"
连接、格式化和其他的字符串成员方法
字符串成员方法 | 描述 |
---|---|
Concat | 将两个字符串连接起来,返回一个新的字符串。 |
Format | 使用指定的格式字符串和参数数组来构造一个新的字符串。格式字符串中的占位符将由参数数组中对应位置 |
Join | 使用指定的分隔符将一个字符串数组的所有元素连接成一个单个字符串。 |
Split | 使用指定的分隔符将原始字符串拆分成一个字符串数组。 |
Substring | 从原始字符串中获取指定起始索引和长度的子字符串。 |
Contains | 检查字符串是否包含指定的子字符串,返回布尔值。 |
ToUpper | 将字符串转换为大写形式。 |
ToLower | 将字符串转换为小写形式。 |
Trim | 删除字符串开头和结尾的空白字符。 |
Replace | 将指定的字符或字符串替换为新的字符或字符串。 |
三、模式匹配与正则表达式
在C#中,模式匹配是一种用于检查数据是否符合特定模式的技术。它允许您使用各种模式来对字符串、集合、对象等进行匹配和处理。C# 7引入了一种名为switch表达式的新语法,通过这种语法,可以方便地对数据进行模式匹配。
另外,在C#中还可以使用正则表达式来进行模式匹配和文本处理。正则表达式是一种强大的工具,可以用于识别文本中特定模式的内容,比如邮箱地址、电话号码、日期等。C#中提供了System.Text.RegularExpressions命名空间,该命名空间包含了用于操作正则表达式的类和方法。
检查作为文本输入的数字
csharp
string input = "12345";
string pattern = @"^\d+$"; // 匹配一个或多个数字
if (Regex.IsMatch(input, pattern))
{
Console.WriteLine("输入是一个有效的整数:" + input);
}
else{
Console.WriteLine("输入不是一个有效的整数");
}
正则表达式的语法
C#中常见的正则表达式语法及其描述。
正则表达式模式 | 描述 |
---|---|
^ | 匹配输入的开头 |
$ | 匹配输入的结尾 |
. | 匹配除换行符以外的任意字符 |
? | 匹配前面的元素零次或一次 |
\d | 匹配一个数字字符 |
\w | 匹配一个单词字符(字母、数字或下划线) |
\s | 匹配一个空白字符(空格,制表符等) |
[] | 匹配括号内的任意一个字符 |
[^] | 匹配不在括号内的任意字符 |
( ) | 用于捕获匹配的子表达式 |
{n} | 匹配前面的元素恰好 n 次 |
{n,} | 匹配前面的元素至少 n 次 |
{n,m} | 匹配前面的元素至少 n 次,但不超过 m 次 |
使用正则表达式分割使用逗号分隔的复杂字符串
csharp
using System;
using System.Text.RegularExpressions;
class Program
{
static void Main()
{
string input = "apple,orange,\"banana,grape\",cherry";
string pattern = @",(?=(?:[^""]*""[^""]*"")*(?![^""]*""))"; // 通过正则表达式匹配逗号,但不匹配双引号内的逗号
string[] result = Regex.Split(input, pattern);
foreach (string item in result)
{
Console.WriteLine(item.Trim('"'));
}
}
}
当处理数字、文本和模式匹配时,C#提供了丰富的功能和灵活的工具。无论是处理简单的整数还是复杂的正则表达式,C#都能满足您的需求。希望本文对您加深了解这些功能并在实际开发中给予有益的启发。如有任何疑问或需要进一步的帮助,请随时联系我。祝您编程愉快!