C#的String.LastIndexOf 方法

返回指定 Unicode 字符或字符串在此实例中的最后一个匹配项的从零开始的索引的位置。 如果未在此实例中找到该字符或字符串,则此方法返回 -1。

一、重载

|-----------------------------------------------------|----------------------------------------------------------------------------------------------|
| LastIndexOf(String, Int32, Int32, StringComparison) | 报告指定字符串在此实例中的最后一个匹配项的从零开始的索引的位置。 搜索在所指定的字符位置的数目的字符串开始时,开始指定字符和其后面的位置。 一个参数指定要执行搜索指定字符串的比较类型。 |
| LastIndexOf(String, Int32, StringComparison) | 报告指定字符串在当前 String 对象中最后一个匹配项的从零开始的索引。 在指定的字符位置开始和在向后的右边该字符串的开头处理的搜索。 一个参数指定要执行搜索指定字符串的比较类型。 |
| LastIndexOf(String, Int32, Int32) | 报告指定字符串在此实例中的最后一个匹配项的从零开始的索引的位置。 搜索在指定字符位置的数目的字符串开始时,开始指定字符和其后面的位置。 |
| LastIndexOf(Char, Int32, Int32) | 报告指定的 Unicode 字符在此实例内的子字符串中的最后一个匹配项的从零开始的索引的位置。 搜索在指定字符位置的数目的字符串开始时,开始指定字符和其后面的位置。 |
| LastIndexOf(String, Int32) | 报告指定字符串在此实例中的最后一个匹配项的从零开始的索引的位置。 在指定的字符位置开始和在向后的右边该字符串的开头处理的搜索。 |
| LastIndexOf(Char, Int32) | 报告指定 Unicode 字符在此实例中的最后一个匹配项的从零开始的索引的位置。 在指定的字符位置开始和在向后的右边该字符串的开头处理的搜索。 |
| LastIndexOf(String) | 报告指定字符串在此实例中的最后一个匹配项的从零开始的索引的位置。 |
| LastIndexOf(Char) | 报告指定 Unicode 字符在此实例中的最后一个匹配项的从零开始的索引的位置。 |
| LastIndexOf(String, StringComparison) | 报告指定字符串在当前 String 对象中最后一个匹配项的从零开始的索引。 一个参数指定要用于指定字符串的搜索类型。 |

二、LastIndexOf(String)

报告指定字符串在此实例中的最后一个匹配项的从零开始的索引的位置。

cs 复制代码
public int LastIndexOf (string value);

参数
value
String
要搜寻的字符串。

返回
Int32
如果找到该字符串,则 value 为从零开始的起始索引位置;如果未找到该字符串,则为 -1。

例外
ArgumentNullException
value 为 null。

三、LastIndexOf(Char)

报告指定 Unicode 字符在此实例中的最后一个匹配项的从零开始的索引的位置。

1.定义

cs 复制代码
public int LastIndexOf (char value);

参数
value
Char
要查找的 Unicode 字符。

返回
Int32
如果找到该字符,则 value 为从零开始的索引位置;如果未找到,则为 -1。

2.示例

打开一个文件,并分离出文件路径、文件名、文件扩展名。

cs 复制代码
// Substring和LastIndexOf()
// 分离文件路径、文件名及扩展名
namespace _043
{
    public partial class Form1 : Form
    {
        private Button? button1;
        private GroupBox? groupBox1;
        private Label? label3;
        private Label? label2;
        private Label? label1;
        private OpenFileDialog? openFileDialog1;

        public Form1()
        {
            InitializeComponent();
            Load += Form1_Load;
        }

        private void Form1_Load(object? sender, EventArgs e)
        {
            openFileDialog1 = new OpenFileDialog
            {
                FileName = "openFileDialog1"
            };
            // 
            // button1
            // 
            button1 = new Button
            {
                Location = new Point(141, 12),
                Name = "button1",
                Size = new Size(75, 23),
                TabIndex = 0,
                Text = "打开文件",
                UseVisualStyleBackColor = true
            };
            button1.Click += Button1_Click;
            // 
            // label3
            // 
            label3 = new Label
            {
                AutoSize = true,
                Location = new Point(11, 85),
                Name = "label3",
                Size = new Size(56, 17),
                TabIndex = 2,
                Text = "扩展名:"
            };
            // 
            // label2
            // 
            label2 = new Label
            {
                AutoSize = true,
                Location = new Point(11, 57),
                Name = "label2",
                Size = new Size(56, 17),
                TabIndex = 1,
                Text = "文件名:"
            };
            // 
            // label1
            //      
            label1 = new Label
            {
                AutoSize = true,
                Location = new Point(11, 29),
                Name = "label1",
                Size = new Size(68, 17),
                TabIndex = 0,
                Text = "文件路径:"
            };
            // 
            // groupBox1
            // 
            groupBox1 = new GroupBox
            {
                Location = new Point(12, 41),
                Name = "groupBox1",
                Size = new Size(340, 118),
                TabIndex = 1,
                TabStop = false,
                Text = "文件路径、文件名、扩展名:"
            };
            groupBox1.Controls.Add(label3);
            groupBox1.Controls.Add(label2);
            groupBox1.Controls.Add(label1);
            groupBox1.SuspendLayout();
            // 
            // Form1
            // 
            AutoScaleDimensions = new SizeF(7F, 17F);
            AutoScaleMode = AutoScaleMode.Font;
            ClientSize = new Size(364, 171);
            Controls.Add(groupBox1);
            Controls.Add(button1);
            Name = "Form1";
            StartPosition = FormStartPosition.CenterScreen;
            Text = "分离文件路径、文件名、扩展名";         
            groupBox1.ResumeLayout(false);
            groupBox1.PerformLayout();
        }

        private void Button1_Click(object? sender, EventArgs e)
        {
            if (openFileDialog1!.ShowDialog() == DialogResult.OK)   //判断是否选择了文件
            {
                string str_file = openFileDialog1.FileName;         //记录选择的文件全路径
                string filepath =                                   //获取文件路径
                    str_file[..(str_file.LastIndexOf('\\') + 1)];
                string filename =                                   //获取文件名
                    str_file[(str_file.LastIndexOf('\\') + 1)..str_file.LastIndexOf('.')];
                string file_extension =                             //获取文件扩展名
                    str_file.Substring(str_file.LastIndexOf('.') + 1,
                    str_file.Length - str_file.LastIndexOf('.') - 1);
                label1!.Text = "文件路径: " + filepath;             //显示文件路径
                label2!.Text = "文件名称: " + filename;             //显示文件名
                label3!.Text = "文件扩展名: " + file_extension;     //显示扩展名
            }
        }
    }
}

三、LastIndexOf(String, StringComparison)

报告指定字符串在当前 String 对象中最后一个匹配项的从零开始的索引。 一个参数指定要用于指定字符串的搜索类型。

1.定义

cs 复制代码
public int LastIndexOf (string value, StringComparison comparisonType);

参数
value
String
要搜寻的字符串。

comparisonType
StringComparison
指定搜索规则的枚举值之一。

返回
Int32
如果找到该字符串,则value 为从零开始的起始索引位置;如果未找到该字符串,则为 -1。

例外
ArgumentNullException
value 为 null。

ArgumentException
comparisonType 不是有效的 StringComparison 值。

2.示例

四、LastIndexOf(String, Int32, Int32, StringComparison)

报告指定字符串在此实例中的最后一个匹配项的从零开始的索引的位置。 搜索在所指定的字符位置的数目的字符串开始时,开始指定字符和其后面的位置。 一个参数指定要执行搜索指定字符串的比较类型。

cs 复制代码
public int LastIndexOf (string value, int startIndex, int count, StringComparison comparisonType);

参数
value
String
要搜寻的字符串。

startIndex
Int32
搜索起始位置。 从此实例的 startIndex 开始搜索。

count
Int32
要检查的字符位置数。

comparisonType
StringComparison
指定搜索规则的枚举值之一。

返回
Int32
如果找到该字符串,则value为从零开始的起始索引位置;如果未找到该字符串或当前实例等于 Empty,则为 -1。

例外
ArgumentNullException
value 为 null。

ArgumentOutOfRangeException
count 为负数。
或
当前实例不等于 Empty,并且 startIndex 为负数。
或
当前实例不等于 Empty,并且 startIndex 大于此实例的长度。
或
当前实例不等于 Empty,并且 startIndex + 1 - count 指定不在此实例内的位置。
或
当前实例等于 Empty 并且 start 小于 -1 或大于零。
或
当前实例等于 Empty 并且 count 大于 1。

ArgumentException
comparisonType 不是有效的 StringComparison 值。

五、LastIndexOf(String, Int32, StringComparison)

报告指定字符串在当前 String 对象中最后一个匹配项的从零开始的索引。 在指定的字符位置开始和在向后的右边该字符串的开头处理的搜索。 一个参数指定要执行搜索指定字符串的比较类型。

cs 复制代码
public int LastIndexOf (string value, int startIndex, StringComparison comparisonType);

参数
value
String
要搜寻的字符串。

startIndex
Int32
搜索起始位置。 从此实例的 startIndex 开始搜索。

comparisonType
StringComparison
指定搜索规则的枚举值之一。

返回
Int32
如果找到该字符串,则value为从零开始的起始索引位置;如果未找到该字符串或当前实例等于 Empty,则为 -1。

例外
ArgumentNullException
value 为 null。

ArgumentOutOfRangeException
当前实例不等于 Empty,并且 startIndex 小于零或大于当前实例的长度。
或
当前实例等于 Empty,并且 startIndex 小于-1 或大于零。

ArgumentException
comparisonType 不是有效的 StringComparison 值。

六、LastIndexOf(String, Int32, Int32)

报告指定字符串在此实例中的最后一个匹配项的从零开始的索引的位置。 搜索在指定字符位置的数目的字符串开始时,开始指定字符和其后面的位置。

cs 复制代码
public int LastIndexOf (string value, int startIndex, int count);

参数
value
String
要搜寻的字符串。

startIndex
Int32
搜索起始位置。 从此实例的 startIndex 开始搜索。

count
Int32
要检查的字符位置数。

返回
Int32
如果找到该字符串,则value为从零开始的起始索引位置;如果未找到该字符串或当前实例等于 Empty,则为 -1。

例外
ArgumentNullException
value 为 null。

ArgumentOutOfRangeException
count 为负数。
或
当前实例不等于 Empty,并且 startIndex 为负数。
或
当前实例不等于 Empty,并且 startIndex 大于此实例的长度。
或
当前实例不等于 Empty,并且 startIndex - count + 1 指定不在此实例内的位置。
或
当前实例等于 Empty 并且 start 小于 -1 或大于零。
或
当前实例等于 Empty 并且 count 大于 1。

七、LastIndexOf(Char, Int32, Int32)

报告指定的 Unicode 字符在此实例内的子字符串中的最后一个匹配项的从零开始的索引的位置。 搜索在指定字符位置的数目的字符串开始时,开始指定字符和其后面的位置。

cs 复制代码
public int LastIndexOf (char value, int startIndex, int count);

参数
value
Char
要查找的 Unicode 字符。

startIndex
Int32
搜索的起始位置。 从此实例的startIndex开始搜索。

count
Int32
要检查的字符位置数。

返回
Int32
如果找到该字符,则value为从零开始的索引位置;如果未找到该字符或当前实例等于 Empty,则为 -1。

例外
ArgumentOutOfRangeException
当前实例不等于 Empty,并且 startIndex 小于零或大于等于当前实例的长度。
或
当前实例不等于 Empty,并且 startIndex - count + 1 小于零。

八、LastIndexOf(String, Int32)

报告指定字符串在此实例中的最后一个匹配项的从零开始的索引的位置。 在指定的字符位置开始和在向后的右边该字符串的开头处理的搜索。

cs 复制代码
public int LastIndexOf (string value, int startIndex);

参数
value
String
要搜寻的字符串。

startIndex
Int32
搜索起始位置。 从此实例的startIndex开始搜索。

返回
Int32
如果找到该字符串,则为 value 的从零开始的起始索引位置;如果未找到该字符串或当前实例等于 Empty,则为 -1。

例外
ArgumentNullException
value 为 null。

ArgumentOutOfRangeException
当前实例不等于 Empty,并且 startIndex 小于零或大于当前实例的长度。
或
当前实例等于 Empty,并且 startIndex 小于-1 或大于零。

九、LastIndexOf(Char, Int32)

报告指定 Unicode 字符在此实例中的最后一个匹配项的从零开始的索引的位置。 在指定的字符位置开始和在向后的右边该字符串的开头处理的搜索。

1.定义

cs 复制代码
public int LastIndexOf (char value, int startIndex);

参数
value
Char
要查找的 Unicode 字符。

startIndex
Int32
搜索的起始位置。 从此实例的startIndex开始搜索。

返回
Int32
如果找到该字符,则value为从零开始的索引位置;如果未找到该字符或当前实例等于 Empty,则为 -1。

例外
ArgumentOutOfRangeException
当前实例不等于 Empty,并且 startIndex 小于零或大于等于当前实例的长度。

2.示例

cs 复制代码
// Sample for String.LastIndexOf(Char, Int32)
namespace LastIndexOf
{
    class Sample
    {
        public static void Main()
        {

            string br1 = "0----+----1----+----2----+----3----+----4----+----5----+----6----+-";
            string br2 = "0123456789012345678901234567890123456789012345678901234567890123456";
            string str = "Now is the time for all good men to come to the aid of their party.";
            int start;
            int at;

            start = str.Length - 1;
            Console.WriteLine("All occurrences of 't' from position {0} to 0.", start);
            Console.WriteLine("{1}{0}{2}{0}{3}{0}", Environment.NewLine, br1, br2, str);
            Console.Write("The letter 't' occurs at position(s): ");

            at = 0;
            while (start > -1 && at > -1)
            {
                at = str.LastIndexOf('t', start);
                if (at > -1)
                {
                    Console.Write("{0} ", at);
                    start = at - 1;
                }
            }
            Console.Write("{0}{0}{0}", Environment.NewLine); //3个空行
        }
    }
}
/*
运行结果:
All occurrences of 't' from position 66 to 0.
0----+----1----+----2----+----3----+----4----+----5----+----6----+-
0123456789012345678901234567890123456789012345678901234567890123456
Now is the time for all good men to come to the aid of their party.

The letter 't' occurs at position(s): 64 55 44 41 33 11 7



*/
相关推荐
伟大无须多言8 分钟前
企业资源规划系统(ERP)服务器上线项目实施指南
开发语言·php
小码编匠9 分钟前
WPF 星空效果:创建逼真的宇宙背景
后端·c#·.net
逊嘘10 分钟前
【Java数据结构】LinkedList
java·开发语言·数据结构
周盛欢11 分钟前
云服务器yum无法解析mirrorlist.centos.org
开发语言·python
lxyzcm23 分钟前
深入理解C++23的Deducing this特性(上):基础概念与语法详解
开发语言·c++·spring boot·设计模式·c++23
heirui_Oooo23 分钟前
利用两种方式分别实现单例模式(懒汉式、饿汉式)
java·开发语言
好开心331 小时前
axios的使用
开发语言·前端·javascript·前端框架·html
又蓝1 小时前
使用 Python 操作 Excel 表格
开发语言·python·excel
余~~185381628002 小时前
稳定的碰一碰发视频、碰一碰矩阵源码技术开发,支持OEM
开发语言·人工智能·python·音视频
Am心若依旧4092 小时前
[c++11(二)]Lambda表达式和Function包装器及bind函数
开发语言·c++