C#拆分字符串,正则表达式Regex.Split 方法 vs String.Split 方法

目录

一、使用的方法

1.使用Split(String, String)方法

2.String.Split 方法

二、源代码

1.源码

2.生成效果


        使用正则表达式可以拆分指定的字符串。同样地,使用字符串对象的Split方法也可以实现此功能。使用字符串对象的Split方法可以根据用户选择的拆分条件,方便地将字符串对象拆分为多个字符串。

一、使用的方法

1.使用Split(String, String)方法

        在由正则表达式模式定义的位置将输入字符串拆分为一个子字符串数组。

public static string[] Split (string input, string pattern);
参数
input    String
要拆分的字符串。pattern    String
要匹配的正则表达式模式。返回
String[]
字符串数组。例外
ArgumentException
出现正则表达式分析错误。ArgumentNullException
input 或 pattern 为 null。RegexMatchTimeoutException
发生超时。 有关超时的详细信息,请参阅“备注”部分。
// 用正则表达式拆分字符串为一个子字符串数组
using System.Text.RegularExpressions;namespace _086_2
{public class Example{public static void Main(){string input = @"01-31-2024";string pattern = @"(-)|(/)";foreach (string result in Regex.Split(input, pattern)){Console.WriteLine("{0}", result);}}}
}
// 运行结果:
/*
01
-
31
-
2024*/

2.使用String.Split 方法

        String对象的Split(Char[])方法,根据指定的分隔字符将字符串拆分为子字符串。

public string[] Split (params char[]? separator);参数
separator    Char[]
分隔字符的数组、不包含分隔符的空数组或 null。返回
String[]
一个数组,其元素包含此实例中的子字符串,这些子字符串由 separator 中的一个或多个字符分隔。 有关详细信息,请参阅“备注”部分。
// 将空格字符和制表 \t 符作为分隔符
namespace _086_1
{internal class Program{private static void Main(string[] args){ArgumentNullException.ThrowIfNull(args);string s = "Today\tI'm going to school";string[] subs = s.Split(' ', '\t');foreach (var sub in subs){Console.WriteLine($"Substring: {sub}");//Console.WriteLine("Substring: {0}", sub);//等效语句}}}
}
// 运行结果:
/*
Substring: Today
Substring: I'm
Substring: going
Substring: to
Substring: school*/

         下面来分享源代码吧:

二、源代码

1.源码

// 使用Split(String, String)方法拆分字符串
// 使用String对象的Split(Char[])方法拆字符串。
using System.Text.RegularExpressions;
namespace _086
{public partial class Form1 : Form{private GroupBox? groupBox1;private Button? button2;private Button? button1;private TextBox? textBox2;private TextBox? textBox1;private Label? label2;private Label? label1;public Form1(){InitializeComponent();Load += Form1_Load;}private void Form1_Load(object? sender, EventArgs e){// // label1// label1 = new Label{AutoSize = true,Location = new Point(6, 23),Name = "label1",Size = new Size(68, 17),TabIndex = 0,Text = "源字符串:"};// // label2// label2 = new Label{AutoSize = true,Location = new Point(6, 48),Name = "label2",Size = new Size(68, 17),TabIndex = 1,Text = "子字符串:"};// // textBox1// textBox1 = new TextBox{Location = new Point(72, 17),Name = "textBox1",Size = new Size(262, 23),TabIndex = 2};// // textBox2// textBox2 = new TextBox{Font = new Font("Microsoft YaHei UI", 7F),Location = new Point(72, 48),Multiline = true,Name = "textBox2",Size = new Size(181, 153),TabIndex = 3};// // button1// button1 = new Button{Location = new Point(259, 48),Name = "button1",Size = new Size(75, 23),TabIndex = 4,Text = "拆分1",UseVisualStyleBackColor = true};button1.Click += Button1_Click;// // button2// button2 = new Button{Location = new Point(259, 74),Name = "button2",Size = new Size(75, 23),TabIndex = 5,Text = "拆分2",UseVisualStyleBackColor = true};button2.Click += Button2_Click;// // groupBox1// groupBox1 = new GroupBox{Location = new Point(12, 12),Name = "groupBox1",Size = new Size(340, 207),TabIndex = 0,TabStop = false,Text = "拆分字符串"};groupBox1.Controls.Add(button2);groupBox1.Controls.Add(button1);groupBox1.Controls.Add(textBox2);groupBox1.Controls.Add(textBox1);groupBox1.Controls.Add(label2);groupBox1.Controls.Add(label1);groupBox1.SuspendLayout();// // Form1// AutoScaleDimensions = new SizeF(7F, 17F);AutoScaleMode = AutoScaleMode.Font;ClientSize = new Size(364, 231);Controls.Add(groupBox1);Name = "Form1";StartPosition = FormStartPosition.CenterScreen;Text = "使用正则表达式拆分字符串";groupBox1.ResumeLayout(false);groupBox1.PerformLayout();}/// <summary>/// 拆分1:使用正则表达式根据数字进行拆分/// 遍历拆分后的字符串集合/// </summary>private void Button1_Click(object? sender, EventArgs e){if (textBox1!.Text != ""){textBox2!.Text = "";string[] str = MyRegex().Split(textBox1!.Text);foreach (string s in str){textBox2!.Text += s + Environment.NewLine;}}else{MessageBox.Show("源字符串不能为空", "拆分1");}}/// <summary>/// 拆分2/// </summary>private void Button2_Click(object? sender, EventArgs e){if(textBox1!.Text != ""){textBox2!.Text = "";string s = textBox1!.Text;char[] separators = ['1', '2', '3', '4', '5', '6', '7', '8', '9'];string[] subs = s.Split(separators/*, StringSplitOptions.RemoveEmptyEntries*/);//注释后与正则方法输出相同结果foreach (var sub in subs){textBox2!.Text += sub + Environment.NewLine;}}else{MessageBox.Show("源字符串不能为空", "拆分2");}}[GeneratedRegex("[1-9]")]private static partial Regex MyRegex();}
}

2.生成效果

 

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

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

相关文章

字符下标计数

下标计数 数组计数&#xff0c;即通过使用一个新的数组&#xff0c;对原来数组里面的项进行计数&#xff0c;统计原来数组中各项出现的次数&#xff0c;如下图所示&#xff1a; 数组计数可以方便快速地统计出一个各项都比较小的数组中&#xff0c;数值相同的数的个数。 数组计数…

移动端常见布局

单独移动端页面&#xff08;主流&#xff09; 1&#xff0c;流式布局&#xff08;百分比布局&#xff09; 流式布局&#xff0c;就是百分比布局&#xff0c;也称非固定像素布局 通过盒子的宽度设置成百分比来根据屏幕的宽度来进行伸缩&#xff0c;不受固定像素的限制&#x…

Flink实战四_TableAPISQL

接上文&#xff1a;Flink实战三_时间语义 1、Table API和SQL是什么&#xff1f; 接下来理解下Flink的整个客户端API体系&#xff0c;Flink为流式/批量处理应用程序提供了不同级别的抽象&#xff1a; 这四层API是一个依次向上支撑的关系。 Flink API 最底层的抽象就是有状态实…

专业数据治理:数据中台系统塑造企业未来的数字化运营管理新秩序

随着信息化进程的快速推进&#xff0c;数据已然成为企业最为宝贵的资产。对于众多企业而言&#xff0c;如何有效整合、治理以及充分利用这些数据&#xff0c;使之成为推动业务发展的引擎&#xff0c;成为当前难题。数据中台应运而生&#xff0c;它被认为是企业数字化转型的至关…

Ubuntu22.04安装docker

君衍. 一、认识docker二、查看Docker的依赖三、在Ubuntu22.04上安装Docker步骤1、更新Ubuntu2、添加Docker库3、安装Docker4、Docker测试 四、安装docker-compose 一、认识docker Docker是一个软件容器平台&#xff0c;属于Linux容器的一种封装&#xff0c;同时提供简单易用的…

【异常检测复现】【DeSTSeg】在虚拟环境中完成配置

文章目录 1.在虚拟环境中安装git2.更改虚拟环境中包的安装位置3.安装anomalib4.安装虚拟环境5.根据requirements.txt安装包6.选择所建立的虚拟环境&#xff0c;并设置解释器7.查看文件夹的内容8.下载数据集9.引用 记录复现过程中安装各种包的命令 下载数据集到本地 1.在虚拟环境…

低代码助力ERP开发:实现负担得起、灵活与高效的解决方案

企业资源规划工具或 ERP 不再为大型国际企业所保留。如今&#xff0c;从 SME 到大型企业&#xff0c;各种规模的企业都使用 ERP 软件来管理其核心流程。全球ERP 软件市场每年价值超过 250 亿美元&#xff0c;年增长率为 10% 到 20%。如此巨大增长的原因是什么&#xff1f; 传统…

RHEL 9上创建本地Yum/DNF存储库

1.挂载RHEL9 ISO文件或DVD 我们假设RHEL 9 iso文件已经复制到系统中。运行以下mount 命令将 ISO文件挂载到/var/repo文件夹。 $ sudo mkdir /var/repo $ sudo mount -o loop rhel-baseos-9.0-x86_64-dvd.iso /var/repo/ 如果是 DVD&#xff0c;请运行 $ sudo mount /dev/sr0 …

LeetCode 每日一题Day 54 - 61

2859. 计算 K 置位下标对应元素的和 给你一个下标从 0 开始的整数数组 nums 和一个整数 k 。 请你用整数形式返回 nums 中的特定元素之 和 &#xff0c;这些特定元素满足&#xff1a;其对应下标的二进制表示中恰存在 k 个置位。 整数的二进制表示中的 1 就是这个整数的 置位…

从零搭建Vue3 + Typescript + Pinia + Vite + Tailwind CSS + Element Plus开发脚手架

项目代码以上传至码云&#xff0c;项目地址&#xff1a;https://gitee.com/breezefaith/vue-ts-scaffold 文章目录 前言脚手架技术栈简介vue3TypeScriptPiniaTailwind CSSElement Plusvite 详细步骤Node.js安装创建以 typescript 开发的vue3工程集成Pinia安装pinia修改main.ts创…

DockerCompose+SpringBoot+Nginx+Mysql实践

DockerComposeSpringBootNginxMysql实践 1、Spring Boot案例 首先我们先准备一个 Spring Boot 使用 Mysql 的小场景&#xff0c;我们做这样一个示例&#xff0c;使用 Spring Boot 做一个 Web 应 用&#xff0c;提供一个按照 IP 地址统计访问次数的方法&#xff0c;每次请求时…

企业中不同大数据迁移的区别是什么?

在大数据时代&#xff0c;企业面临着海量数据的管理、分析和应用挑战。为了克服数据存储、传输和处理中的难题&#xff0c;如数据量巨大、网络环境多变、存储成本高昂以及安全风险上升等&#xff0c;企业必须对数据进行备份、同步、分发或归档。这一过程中&#xff0c;数据的复…