C#常见的.Net类型(一)

目录

一、处理数字

常见的数据类型之一是数字,.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#都能满足您的需求。希望本文对您加深了解这些功能并在实际开发中给予有益的启发。如有任何疑问或需要进一步的帮助,请随时联系我。祝您编程愉快!

相关推荐
dax.net几秒前
在C#中使用适配器Adapter模式和扩展方法解决面向的对象设计问题
设计模式·c#
shinelord明4 分钟前
【Python】Python知识总结浅析
开发语言·人工智能·python
吹老师个人app编程教学8 分钟前
阿里巴巴_java开发规范手册详解
java·开发语言
初阳78528 分钟前
【Qt】控件概述(4)—— 输出类控件
开发语言·qt·命令模式
大白_dev31 分钟前
数据校验的总结
java·开发语言
雷神乐乐34 分钟前
Python常用函数
开发语言·python
失落的香蕉37 分钟前
Java第二阶段---10方法带参---第三节 面向对象和面向过程的区别
java·开发语言
安冬的码畜日常1 小时前
【玩转 JS 函数式编程_008】3.1.2 JavaScript 函数式编程筑基之:箭头函数——一种更流行的写法
开发语言·javascript·ecmascript·es6·this·箭头函数
只会掉头发的程序猿1 小时前
在QT中将Widget提升为自定义的Widget后,无法设置Widget的背景颜色问题解决方法
开发语言·qt
杰尼杰尼丶1 小时前
MQTTnet.Extensions.ManagedClient客户端连接
mqtt·unity·c#