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

目录

  • 一、处理数字
  • 二、处理文本
  • 三、模式匹配与正则表达式

一、处理数字

常见的数据类型之一是数字,.NET用于处理数字的最常见类型

示例类型描述
int用于表示整数值,没有小数部分
byte用于表示8位无符号整数
double用于表示双精度浮点数
decimal用于表示高精度小数
BigInteger用于表示任意大小的整数

C#处理大的整数
处理大的整数通常会使用BigInteger类。这个类允许你表示和操作任意大小的整数,而不受内置整数类型的限制。要使用BigInteger类,你需要导入System.Numerics命名空间,然后就可以创建BigInteger实例并进行各种数学运算了。

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类表示一个具有实部和虚部的复数,并提供了一些方法来进行复数运算,如加法、减法、乘法和除法等。

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 属性来获取一个字符串的长度。这个属性返回字符串中字符的数量,而不是字节数或者编码单元的数量。

string str = "Hello, World!";
int length = str.Length;
Console.WriteLine("The length of the string is: " + length);

获取字符串中的字符
在C#中,使用字符串的索引来获取特定位置的字符。例如,如果您有一个字符串变量 str,您可以通过 str[0] 来获取第一个字符,以此类推。

string str = "Hello, world!";
char firstChar = str[0]; // 获取第一个字符'H'
char fifthChar = str[5]; // 获取第六个字符','

拆分字符串
使用 Split 方法来拆分字符串。这个方法接受一个包含分隔符的字符数组作为参数,并返回一个字符串数组。

string str = "apple,orange,banana";
string[] fruits = str.Split(','); // 使用逗号作为分隔符来拆分字符串
foreach (string fruit in fruits)
{Console.WriteLine(fruit);
}

获取字符串的一部分
使用字符串的 Substring 方法来获取字符串的一部分。该方法接受一个起始索引和一个长度,并返回从起始索引开始指定长度的子字符串。

string str = "Hello, world!";
string part = str.Substring(7, 5); // 从索引 7 开始,获取长度为 5 的子字符串
Console.WriteLine(part); // 输出 "world"

检查字符串的内容
可以使用字符串的 Contains 、StartsWith、EndsWith方法来检查字符串是否包含特定的子字符串。此方法返回一个布尔值,指示原始字符串中是否存在指定的子字符串。

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命名空间,该命名空间包含了用于操作正则表达式的类和方法。

检查作为文本输入的数字

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 次

使用正则表达式分割使用逗号分隔的复杂字符串

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/740340.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

云起云落:揭秘云计算基础内功心法

文章目录 云计算基本概念云计算发展历程云计算计算模式云计算商业模式云计算部署模式私有云部署公有云部署混合云部署 云计算虚拟化技术虚拟机模式虚拟化容器模式虚拟化容器VS虚拟机 常见虚拟化工具和技术虚拟化工具“轻量级”虚拟化工具 云计算供应商云计算三要点(…

笔记:12.1 使用sqlplus /as sysdba登录报错ORA-01017

说明 使用sqlplus / as sysdba 登录时报错 ORA-01017:invalid username/password;logon denied 此时无任何用户的账号密码,需要对密码进行重置,可参考一下方法。 操作 1,删除原PWD文件,位置在 ORACLE_HOME…

【Node.js相关问题】npm install报错后重装node版本及npm环境变量配置及npm run dev启动报错原因分析解决办法

一、问题描述 昨天在准备打开b站up主三更草堂的博客项目08-02.基础版本前端联调_哔哩哔哩_bilibili中的前端工程时,使用以下两个命令分别都出现了报错。 命令1: # install dependenciesnpm install 命令2: # serve with hot reload at loca…

服务器加密机的工作原理是什么

服务器加密机在现代信息社会中扮演着至关重要的角色。它是确保服务器数据安全、保障数据传输机密性,以及防范恶意攻击和网络窃取的关键技术手段。本文将对服务器加密机进行详细解读,分析其原理、应用以及在未来发展中的重要性。 服务器加密机是一种专门用…

跨境电商选品实战——Ownips静态ip代理+Python爬虫轻松搞定Lazada电商选品

文章目录 一、引言二、Lazada电商平台爬虫实战2.1、分析Lazada电商平台的商品列表接口2.2、定位商品列表计算逻辑2.3、封装IP代理2.4、运行爬虫 三、数据处理及选品分析四、Ownips——企业级全球静态IP代理 一、引言 互联网与外贸的结合,催生了蓬勃兴起的跨境电子商…

vue的router

目前单页应用(SPA)越来越成为前端主流,单页应用一大特点就是使用前端路由,由前端来直接控制路由跳转逻辑,而不再由后端人员控制,这给了前端更多的自由。 当用户在应用中进行导航时,Vue Router …

基于EasyCVR视频技术的流媒体视频融合与汇聚管理系统建设方案

流媒体视频融合与汇聚管理系统可以实现对各类模块化服务进行统一管理和配置等操作,可实现对应用服务的整合、管理及共享,以标准接口的方式,业务平台及其他第三方业务平台可以方便地调用各类数据,具有开放性和可扩展性。在流媒体视…

122. 买卖股票的最佳时机 II(力扣LeetCode)

文章目录 122. 买卖股票的最佳时机 II题目描述贪心 122. 买卖股票的最佳时机 II 题目描述 给你一个整数数组 prices ,其中 prices[i] 表示某支股票第 i 天的价格。 在每一天,你可以决定是否购买和/或出售股票。你在任何时候 最多 只能持有 一股 股票。…

【强化学习抓取】偏机器人领域(略)

文章目录 1. A Grasp Pose is All You Need: Learning Multi-fingered Grasping with Deep Reinforcement Learning from Vision and Touch摘要和结论引言相关工作模型框架 1. A Grasp Pose is All You Need: Learning Multi-fingered Grasping with Deep Reinforcement Learni…

基于PPT战略的河南嵩县旅游扶贫模式研究

目录 摘 要 3 Abstract 3 (一)研究背景 4 (二)研究意义 5 (三)研究目的 6 二、概念界定及相关研究 6 (一)PPT战略 6 (二)PPT战略相关研究 6 (三&…

基于YOLOv8/YOLOv7/YOLOv6/YOLOv5的常见手势识别系统(深度学习模型+UI界面代码+训练数据集)

摘要:开发手势识别系统对于增强人机交互和智能家居控制领域的体验非常关键。本博客详尽阐述了通过深度学习技术构建手势识别系统的过程,并附上了全套实施代码。系统采用了先进的YOLOv8算法,并通过与YOLOv7、YOLOv6、YOLOv5的性能对比&#xf…

AMS、PMS和WMS学习链接

原文: Framework学习(三)之PMS、AMS、WMS_ams pms-CSDN博客 1:PackageMangerService(PMS)讲解博主 PMS系列我觉得csdn博主jeanboy讲的非常好,这里附上博主的博客链接jeanboy。这是一位资深级的博客专家。关于他PMS的讲…

Java打乱数组元素

package com.mohuanan.exercise;import java.util.Random;//打乱数组的元素 public class ExerciseDemo05 {public static void main(String[] args) {int[] arr {1,2,3,4,5};Random r new Random();for (int i 0; i < arr.length; i) {int randomIndex r.nextInt(5);in…

project generator 简单使用

文章目录 1 progen 资源2 使用简介2.1 安装2.2 添加 target&#xff08;可选&#xff09;2.3 替换 CMake 模板&#xff08;可选&#xff09;2.4 创建 progen 项目 3 总结 1 progen 资源 0&#xff09;简介&#xff1a;progen&#xff08;project-generator&#xff0c;项目生成…

·xss文件上传漏洞

xss文件上传漏洞 本质&#xff1a;对上传的文件不加限制的漏洞&#xff0c;例如上传PHP文件。 面对一定程度上的防护&#xff0c;我们应该如何绕过。 一&#xff0c;一句话木马&#xff1a; <&#xff1f;php Eval($.post{})> ::$DATA ([‘pass’]); ?> 再ur…

C语言 - 各种自定义数据类型

1.结构体 把不同类型的数据组合成一个整体 所占内存长度是各成员所占内存的总和 typedef struct XXX { int a; char b; }txxx; txxx data; typedef struct XXX { int a:1; int b:1; …

字节一面:TCP 和 UDP 可以使用同一个端口吗?

数据包是计算机网络通信的核心&#xff0c;包含头部和数据负载。TCP和UDP协议在传输层使用端口号区分服务和应用。操作系统通过IP头部中的协议字段和端口号来管理网络流量&#xff0c;确保TCP和UDP流量即使共用端口号也不会相互干扰。 在现代计算机网络中&#xff0c;数据传输…

基于Springboot的代驾管理系统(有报告)。Javaee项目,springboot项目。

演示视频&#xff1a; 基于Springboot的代驾管理系统&#xff08;有报告&#xff09;。Javaee项目&#xff0c;springboot项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09;三层体系结构&…

【DAY11 软考中级备考笔记】数据结构 查找和排序

数据结构 查找和排序 3月12日 – 天气&#xff1a;晴 1. 顺序查找 顺序查找就是简单的从头一个一个的进行比较&#xff0c;注意它的平均查找长度 2. 折半查找 折半查找和二叉排序树一致&#xff1a; 优点&#xff1a;查找效率很高 缺点&#xff1a;要求必须是循序存储并且表中…

《计算机网络》考研:2024/3/11:2.1.6-习题精选(5、6题暂未完成)

2024/3/11 2.1.6 习题精选 一、单项选择题 我的答案&#xff1a;1.D 2.A 3.C 4.B 5.A 标准答案&#xff1a;1.D 2.A 3.B 4.B 5.A 3、【解】&#xff1a; 并行传输的特点&#xff1a;距离短、速度快。 串行传输的特点&#xff1a;距离长、速度慢。 在计算机内部通常为了保证速…