C#用Array类的FindAll方法和List<T>类的Add方法按关键词在数组中检索元素并输出

目录

一、使用的方法

1. Array.FindAll(T[], Predicate) 方法

(1)定义

(2)示例

2.List类的常用方法

(1)List.Add(T) 方法

(2)List.RemoveAt(Int32) 方法

(3)List.Insert(Int32, T) 方法

(4)List.RemoveAll(Predicate) 方法

(5)List.RemoveRange(Int32, Int32) 方法

(6)示例

二、实例

1.源码

2.生成效果:


一、使用的方法

1. Array.FindAll<T>(T[], Predicate<T>) 方法

        通过使用Array类的FindAll方法来实现根据指定条件在数组中检索元素的功能。

(1)定义

public static T[] FindAll<T> (T[] array, Predicate<T> match);类型参数
T
数组元素的类型。参数
array    T[]
要搜索的从零开始的一维 Array。match    Predicate<T>
Predicate<T>,定义要搜索元素的条件。返回
T[]
如果找到一个 Array,其中所有元素均与指定谓词定义的条件匹配,则为该数组;否则为一个空 Array。例外
ArgumentNullException
array 为 null。
- 或 -
match 为 null。

(2)示例

// 创建一个包含 50 个随机数的数组,其值范围为 0 到 1000。
// 然后, FindAll 使用 lambda 表达式为搜索条件,
// 该表达式返回 300 到 600 范围内的值。
namespace _094_1
{public class Example{public static void Main(){int[] values = GetArray(50, 0, 1000);int lowBound = 300;int upperBound = 600;int[] matchedItems = Array.FindAll(values, x =>x >= lowBound && x <= upperBound);int i = 0;foreach (int item in matchedItems){Console.Write("{0}  ", item);i++;if (i % 12 == 0){Console.WriteLine();}}//for (int ctr = 0; ctr < matchedItems.Length; ctr++)//{//    Console.Write("{0}  ", matchedItems[ctr]);//    if ((ctr + 1) % 12 == 0)//        Console.WriteLine();//}}/// <summary>/// 随机生成整型数组/// </summary>/// <param name="n">数组元素个数</param>/// <param name="lower">范围的下</param>/// <param name="upper">范围的上</param>/// <returns></returns>private static int[] GetArray(int n, int lower, int upper){Random rnd = new();List<int> list = [];for (int ctr = 1; ctr <= n; ctr++)list.Add(rnd.Next(lower, upper + 1));return [.. list];//等效于return list.ToArray();}}
}
// 运行结果:
/*
476  417  509  391  461  327  383  500  359  489  495  582
543  313  596  568*/

2.List<T>类的常用方法

(1)List<T>.Add(T) 方法

         将对象添加到 List<T> 的结尾处。就好像StringBuilder.Append()一样。

public void Add (T item);
参数
item    T
要添加到 List<T> 末尾的对象。 对于引用类型,该值可以为 null。实现
Add(T)

(2)List<T>.RemoveAt(Int32) 方法

         移除 List<T> 的指定索引处的元素。

public void RemoveAt (int index);参数
index    Int32
要移除的元素的从零开始的索引。例外
ArgumentOutOfRangeException
index 小于 0。
或 - index 等于或大于 Count。

(3) List<T>.Insert(Int32, T) 方法

        将元素插入 List<T> 的指定索引处。

public void Insert (int index, T item);参数
index    Int32
应插入 item 的从零开始的索引。item    T
要插入的对象。 对于引用类型,该值可以为 null。实现
Insert(Int32, T)例外
ArgumentOutOfRangeException
index 小于 0。
- 或 -
index 大于 Count。

(4)List<T>.RemoveAll(Predicate<T>) 方法

         移除与指定的谓词所定义的条件相匹配的所有元素。

public int RemoveAll (Predicate<T> match);参数
match    Predicate<T>
Predicate<T> 委托,用于定义要移除的元素应满足的条件。返回
Int32
从 List<T> 中移除的元素数。例外
ArgumentNullException
match 为 null。

(5)List<T>.RemoveRange(Int32, Int32) 方法

         从 List<T> 中移除一系列元素。

public void RemoveRange (int index, int count);参数
index    Int32
要移除的元素范围的从零开始的起始索引。count    Int32
要移除的元素数。例外
ArgumentOutOfRangeException
index 小于 0。
或 - count 小于 0。
ArgumentException
index 和 count 不表示 List<T> 中元素的有效范围。

(6)示例

namespace _094_2
{internal class Program{private static void Main(string[] args){ArgumentNullException.ThrowIfNull(args);//添加对象:List<int> numbers = [1, 2, 3];//删除对象:numbers.RemoveAt(1); // 删除索引为1的对象(2)//插入对象:numbers.Insert(1, 4); // 在索引为1的位置插入对象(4)numbers.Add(6);numbers.Add(3);numbers.Add(6);numbers.Add(3);numbers.Add(4);numbers.Add(5);numbers.Add(6);//使用RemoveAll方法来删除List<T>中的所有对象:numbers.RemoveAll(x => x == 3); // 删除所有值为2的对象//使用RemoveRange方法来删除List<T>中指定范围的对象:numbers.RemoveRange(1, 3); // 删除索引从1开始的3个对象//使用List<T>类的GetEnumerator方法遍历列表中的剩余对象。// 先移除一个对象、再插入一个、在添加3个numbers.RemoveAt(2);numbers.Insert(2, 6);numbers.Add(6);numbers.Add(78);numbers.Add(66);// 遍历剩余对象for (int i = 0; i < numbers.Count; i++){Console.Write("{0}  ",numbers[i]);}Console.WriteLine();}}
}
//运行结果:
/*
1  4  6  6  6  78  66*/

二、实例

        按关键词检索并输出

1.源码

//按关键词检索输出
namespace _094
{public partial class Form1 : Form{private GroupBox? groupBox1;private TextBox? textBox2;private Label? label1;private Label? label2;private TextBox? textBox1;private string[]? str_array;//定义字符串数组字段public Form1(){InitializeComponent();StartPosition = FormStartPosition.CenterScreen;Load += Form1_Load;}private void Form1_Load(object? sender, EventArgs e){// // textBox1显示// textBox2 = new TextBox{Location = new Point(12, 140),Multiline = true,Name = "textBox1",Size = new Size(290, 69),TabIndex = 0};// // label1// label1 = new Label{AutoSize = true,Location = new Point(39, 95),Name = "label1",Size = new Size(80, 17),TabIndex = 1,Text = "输入关键词:"};// // label2// label2 = new Label{AutoSize = true,Location = new Point(135, 19),Name = "label2",Size = new Size(0, 17),TabIndex = 2};// // textBox2输入// textBox1 = new TextBox{Location = new Point(135, 89),Name = "textBox2",Size = new Size(125, 33),TabIndex = 3};textBox1.TextChanged += TextBox1_TextChanged;// // groupBox1// groupBox1 = new GroupBox{Location = new Point(12, 12),Name = "groupBox1",Size = new Size(290, 122),TabIndex = 0,TabStop = false,Text = "关键词检索"};groupBox1.Controls.Add(label1);groupBox1.Controls.Add(label2);groupBox1.Controls.Add(textBox1);groupBox1.SuspendLayout();// // Form1// AutoScaleDimensions = new SizeF(7F, 17F);AutoScaleMode = AutoScaleMode.Font;ClientSize = new Size(314, 221);Controls.Add(textBox2);Controls.Add(groupBox1);Name = "Form1";Text = "按关键词在数组中检索";groupBox1.ResumeLayout(false);groupBox1.PerformLayout();str_array = ["明日科技","C#编程词典","C#范例大全","C#范例宝典"];for (int i = 0; i < str_array.Length; i++)//循环输出字符串{label2.Text += str_array[i] + "\n";}}/// <summary>/// 输出检索结果/// 使用FindAll方法查找相应字符串/// </summary>private void TextBox1_TextChanged(object? sender, EventArgs e){if (textBox1!.Text != string.Empty){string[] str_temp = Array.FindAll(str_array!, (s) => s.Contains(textBox1.Text));if (str_temp.Length > 0){textBox2!.Clear();foreach (string s in str_temp)//向控件中添加字符串{textBox2.Text += s + Environment.NewLine;}}else{textBox2!.Clear();textBox2.Text = "没有找到记录";}}else{textBox2!.Clear();}}}
}

2.生成效果:

 

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

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

相关文章

Bytebase 签约 Vianova,助力欧洲城市交通智能平台中 Snowflake 和 PG 的变更自动化及版本控制

在数字化发展的浪潮中&#xff0c;自动化数据库变更管理成为提升产品上线效率、降低人为失误风险的关键工具&#xff0c;同时促进流程的一致性与标准化&#xff0c;确保合规性和变更的可追溯性。近日&#xff0c;数据库 DevOps 团队协同管理工具 Bytebase 签约欧洲交通数据管理…

免费在线绘图工具有哪些好用的?线画图工具是比较好的选择?

据说一张图胜过千言万语。一张好的图片可以帮助你快速表达自己的想法&#xff0c;让自己的想法更直观清晰&#xff0c;无论是产品分析、方案选项还是技术交流。市面上有很多绘图工具。这里有一些好用又免费的工具&#xff0c;绝对会让你在几分钟内坠入爱河。 即时设计 - 可实时…

Android~集成opencv问题

dlopen failed: library “libopencv_java4.so” not found E FATAL EXCEPTION: mainProcess: com.cv.monitor, PID: 4371java.lang.UnsatisfiedLinkError: dlopen failed: library "libopencv_java4.so" not found: needed by /data/app/~~KwL8rjD8_by_YVAyU82UCA…

YUM | 起源 | 发展 | 运行逻辑

介绍 YUM&#xff08;Yellowdog Updater, Modified&#xff09;起源于 Red Hat Linux 发行版 up2date 工具。 最初&#xff0c;up2date 是由 Red Hat 公司提供的用于管理系统更新的工具。然而&#xff0c;社区逐渐对 up2date 出现一些不满&#xff0c;主要是由于其使用体验和…

ubuntu20安装mysql8

1.安装 sudo apt update sudo apt install mysql-server-8.0 -y2.查看运行状态 yantaoubuntu20:~$ sudo systemctl status mysql ● mysql.service - MySQL Community ServerLoaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset:>Active: active …

10英寸安卓车载平板电脑丨ONERugged车载工业平板:解决农业工作效率

农业是人类社会的基石之一&#xff0c;而农业工作效率的提升一直是农民和农业专业人士关注的重要议题。随着技术的不断进步&#xff0c;车载工业平板成为了解决农业工作效率的创新解决方案。本文将探讨车载工业平板如何为农业带来巨大的改变&#xff0c;提高农民的工作效率和农…

常用数字处理格式校验

1、前端校验 1.1 要求为数字类型&#xff08;不限位数与正负&#xff09; input输入框添加 type“number” <el-input type"number"/>当typenumber时&#xff0c;仍然可以输入字母e或E。解决方法是&#xff1a;给typenumber的输入框添加一个正则表达式&…

Android Studio 安装Flutter插件但是没法创建项目

Android Studio 安装Flutter插件但是没法创建项目 如果你在Android Studio已经安装了Dart、Flutter插件&#xff0c;但是不能创建Flutter项目。 原因是因为Android Studio的版本更新&#xff0c;Android APK Support这个插件没被选中。 一旦勾选这个插件之后&#xff0c;就能…

python创建pdf文件

目录 一&#xff1a;使用reportlab库 二&#xff1a;使用使pdf库 在Python中生成PDF文件可以使用多种库&#xff0c;其中最常用的是reportlab和fpdf。以下是使用这两个库生成PDF文件的示例代码&#xff1a; 一&#xff1a;使用reportlab库 1&#xff1a;写入文字信息 from r…

ubuntu22.04@laptop OpenCV Get Started

ubuntu22.04laptop OpenCV Get Started 1. 源由2. 步骤3. 预期&展望4. 参考资料 1. 源由 OpenCV在学校的时候接触过&#xff0c;不过当时专注在物理、研究方面&#xff0c;没有好好的学习下。 这次借后续视频分析刚性需求&#xff0c;对OpenCV做个入门的学习和研读&#…

容器化技术基础概念:雪花服务器与凤凰服务器

雪花服务器与凤凰服务器&#xff1a;两种软件部署领域的基础设施对比 在软件部署领域&#xff0c;服务器管理在正常运行时间、效率和安全性方面发挥着关键作用。存在两种截然不同的方法&#xff1a;雪花服务器和凤凰服务器。了解它们之间的区别将帮助您选择最适合您需求的策略…

c++之说_10|自定义类型 union 联合体

之前我们说了一些 struct 结构体 现在来了解新的自定义类型 union 联合体 语法 union ptr {void* fptr;CLassFunPtr p;FunPtr p2;ptr& operator(CLassFunPtr ptr){p ptr;return *this;}ptr& operator(FunPtr Fptr){p2 Fptr;return *this;} } FunPtr_; 我们看到了…

vue+vite项目,无法使用绝对地址动态导入

博主的桌面工具软件已经正式开发&#xff0c;获取方式&#xff1a; 可以关注我的小程序【中二少年工具箱】获取。&#xff08;若小程序更新有延迟&#xff0c;可先收藏小程序&#xff09; 通过下载链接 百度网盘: 链接&#xff1a;https://pan.baidu.com/s/15zDnSoEzJGSZLjpD…

C语言之随心所欲打印三角形,金字塔,菱形(倒金字塔)

个人主页&#xff08;找往期文章包括但不限于本期文章中不懂的知识点&#xff09;&#xff1a; 我要学编程(ಥ_ಥ)-CSDN博客 目录 三角形 金字塔 倒金字塔 菱形 三角形 题目&#xff1a;根据输入的行数打印对应的三角形。&#xff08;用 * 号打印&#xff09; #includ…

在windows平台上mysql的安装教程

1.下载 mysql下载网址&#xff1a;https://dev.mysql.com/downloads/installer/ 这里直接选择的是mysql的社区版。自己使用直接选择免费的就行 直接选择下载 2.安装过程 选择Server only 就行 下一步 下一步 下一步&#xff0c;选择弱密码把&#xff0c;方便学习和自己使用 设置…

Redis实现:每个进程每30秒执行一次任务

前言 项目中要实现每一进程每30秒执行一次 代码实现: public class DistributedScheduler {private final RRedisClient redisson;private final String processKeyPrefix; // 例如 "process_"public DistributedScheduler(RRedisClient redisson) {this.redisson…

蓝桥杯Web应用开发-浮动与定位

浮动与定位 浮动布局比较灵活&#xff0c;不易控制&#xff0c;而定位可以控制元素的过分灵活性&#xff0c;给元素一个具体的空间和精确的位置。 浮动 我们使用 float 属性指定元素沿其容器的左侧或右侧放置&#xff0c;浮动布局常见取值如下&#xff1a; • left&#xff0…

K8S之Namespace的介绍和使用

Namespace的理论和实操 Namespace理论说明Namespace实操创建、查看命名空间使用ResouceQuota 对Namespace做资源限额更多ResouceQuota 的使用 Namespace理论说明 命名空间定义 K8s支持多个虚拟集群&#xff0c;它们底层依赖于同一个物理集群。 这些虚拟集群被称为命名空间&…

seatunnel数据集成(一)简介与安装

seatunnel数据集成&#xff08;一&#xff09;简介与安装seatunnel数据集成&#xff08;二&#xff09;数据同步seatunnel数据集成&#xff08;三&#xff09;多表同步seatunnel数据集成&#xff08;四&#xff09;连接器使用 1、背景 About Seatunnel | Apache SeaTunnel …

Docker下安装GitLab

极狐GitLab Docker 镜像 | 极狐GitLab 安装所需最小配置 内存至少4G 系统内核至少3.10以上 uname -r 命令可以查看系统内核版本 安装Docker 1.更新 yum源 yum update 2.安装依赖(如果在操作第三步的时候提示yum-config-manager 未找到命令 就安装下面依赖) yum instal…