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.hqwc.cn/news/460468.html

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

相关文章

stable_diffusion提示词编写笔记(1)

stable_diffusion提示词编写笔记(1) start 总结一下AI绘画学到的知识。 一.提示词分两种&#xff1a; 1.正向提示词&#xff1b; 2.反向提示词&#xff1b; 一个对应你希望图形包含的内容提示词&#xff0c;一个对应你不希望图形出现的内容提示词。 二.如何书写提示词 1.内…

gh0st远程控制——客户端界面编写(三)

◉ 主控端界面添加右键弹出菜单的功能 为Onlie_List区域添加右键弹出菜单项的功能&#xff1a; 3个视图&#xff1a;类视图、解决方案视图、资源视图 在资源视图下添加一个Menu&#xff1a; 更改Menu的ID为IDR_MENU_ONLINE&#xff1a; 为各控件添加便于区分的ID&#xff1a…

C语言函数栈帧的创建和销毁(逐步分析)

什么是函数栈帧 我们在写C语言代码的时候&#xff0c;经常会把一个独立的功能抽象为函数&#xff0c;所以C程序是以函数为基本单位的。 那函数是如何调用的&#xff1f;函数的返回值又是如何返回的&#xff1f;函数参数是如何传递的&#xff1f;这些问题都和函数栈帧有关系。 …

数据结构(C语言)代码实现(八)——顺序栈实现数值转换行编辑程序汉诺塔

目录 参考资料 顺序栈的实现 头文件SqStack.h&#xff08;顺序栈函数声明&#xff09; 源文件SqStack.cpp&#xff08;顺序栈函数实现&#xff09; 顺序栈的三个应用 数值转换 行编辑程序 顺序栈的实现测试 栈与递归的实现&#xff08;以汉诺塔为例&#xff09; 参考资…

Stable Diffusion 模型下载:Samaritan 3d Cartoon(撒玛利亚人 3d 卡通)

文章目录 模型介绍生成案例案例一案例二案例三案例四案例五案例六案例七案例八案例九案例十 下载地址 模型介绍 由“PromptSharingSamaritan”创作的撒玛利亚人 3d 卡通类型的大模型&#xff0c;该模型的基础模型为 SD 1.5。 条目内容类型大模型基础模型SD 1.5来源CIVITAI作者…

编译原理实验1——词法分析(python实现)

文章目录 实验目的实现定义单词对应的种别码定义输出形式&#xff1a;三元式python代码实现运行结果检错处理 总结 实验目的 输入一个C语言代码串&#xff0c;输出单词流&#xff0c;识别对象包含关键字、标识符、整型浮点型字符串型常数、科学计数法、操作符和标点、注释等等。…

飞天使-linux操作的一些技巧与知识点8-zabbix6.0 容器搭建

文章目录 安装docker安装步骤mysql下载镜像安装zabbix 测试效果 安装docker 1. 配置官方 yum 源$ sudo yum install -y yum-utils $ sudo yum-config-manager \--add-repo \https://download.docker.com/linux/centos/docker-ce.repo2. 安装 Docker$ sudo yum install docker-c…

Docker的镜像和容器的区别

1 Docker镜像 假设Linux内核是第0层&#xff0c;那么无论怎么运行Docker&#xff0c;它都是运行于内核层之上的。这个Docker镜像&#xff0c;是一个只读的镜像&#xff0c;位于第1层&#xff0c;它不能被修改或不能保存状态。 一个Docker镜像可以构建于另一个Docker镜像之上&…

go语言进阶篇——面向对象(一)

什么是面向对象 在我们设计代码时&#xff0c;比如写一个算法题或者写一个问题结局办法时&#xff0c;我们常常会使用面向过程的方式来书写代码&#xff0c;面向过程主要指的是以解决问题为中心&#xff0c;按照一步步具体的步骤来编写代码或者调用函数&#xff0c;他在问题规…

Linux系统安全之iptables防火墙

目录 一、iptables防火墙的基本介绍 1、netfile与iptables的关系 1.1netfile 1.2iptables 1.3iptables是基于内核的防火墙&#xff0c;其中内置了raw&#xff0c;mangle&#xff0c;nat和filter四个规则表 2、iptables防火墙默认规则表&#xff0c;链结构 二、iptables的…

Qt程序设计-读写CSV文件

本文实例演示Qt读写CSV文件实现 创建项目 添加两个按钮和一个显示路径的label 界面如下 UI界面 <?xml version="1.0" encoding="UTF-8"?> <ui version="4.0"><class>MainWindow</class><widget class="QM…

文档协作技术——Operational Transformations简单了解

OT是支持协作软件系统的一种广泛使用的技术。 OT通常使用副本文档储存&#xff0c;每个客户端都拥有对文档的副本。客户端在本地副本以无锁非堵塞方式操作&#xff0c;并将改变传递到其他客户端。当客户端收到其他客户端传播的改变之后&#xff0c;通过转换应用更改&#xff0…