C#中String.LastIndexOf方法小结

 更新时间:2024年01月22日 09:50:06   作者:wenchm  
String.LastIndexOf()是C#中string类的一个方法,它用于在字符串中查找指定子字符串(或字符)最后一次出现的位置,并返回其索引,本文主要介绍了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)

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

public int LastIndexOf (string value);

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

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

例外
ArgumentNullException
value 为 null。

三、LastIndexOf(Char)

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

1.定义

public int LastIndexOf (char value);

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

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

2.示例

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

// 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.定义

public int LastIndexOf (string value, StringComparison comparisonType);

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

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

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

例外
ArgumentNullException
value 为 null。

ArgumentException
comparisonType 不是有效的 StringComparison 值。

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

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

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 对象中最后一个匹配项的从零开始的索引。 在指定的字符位置开始和在向后的右边该字符串的开头处理的搜索。 一个参数指定要执行搜索指定字符串的比较类型。

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)

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

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 字符在此实例内的子字符串中的最后一个匹配项的从零开始的索引的位置。 搜索在指定字符位置的数目的字符串开始时,开始指定字符和其后面的位置。

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)

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

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.定义

public int LastIndexOf (char value, int startIndex);

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

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

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

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

2.示例

// 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



*/

到此这篇关于C#中String.LastIndexOf方法小结的文章就介绍到这了,更多相关C# String.LastIndexOf内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家! 

相关文章

  • C#使用Spire.PDF for .NET实现为PDF添加X/Y页码

    C#使用Spire.PDF for .NET实现为PDF添加X/Y页码

    本文将引导您使用 C# 编程语言,结合强大的第三方库 Spire.PDF for .NET,轻松实现在 PDF 文档的每一页底部添加“第 X 页 / 共 Y 页”格式的页码,从而优化您的文档处理流程
    2025-12-12
  • C#中IEnumerable、ICollection、IList、List之间的区别

    C#中IEnumerable、ICollection、IList、List之间的区别

    这篇文章主要介绍了C#中IEnumerable、ICollection、IList、List之间的区别,本文分别分析了它的实现源码,从而总结出了它们之间的关系和不同之处,需要的朋友可以参考下
    2015-06-06
  • C#/VB.NET实现在PDF文档中插入,替换或删除图片

    C#/VB.NET实现在PDF文档中插入,替换或删除图片

    这篇文章主要为大家详细介绍了如何使用 Spire.PDF for .NET 通过程序在 PDF 文档中插入、替换或删除图片,感兴趣的小伙伴可以跟随小编一起学习一下
    2023-12-12
  • C#装箱与拆箱操作的深入讲解

    C#装箱与拆箱操作的深入讲解

    这篇文章主要给大家介绍了关于C#装箱与拆箱操作的相关资料,文中通过图文介绍的非常详细,对大家的学习或者使用C#具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-03-03
  • C# 中类型转换方式之显式转换和 as 运算符

    C# 中类型转换方式之显式转换和 as 运算符

    在 C# 中,有两种常见的类型转换方式:显式转换和as 运算符,它们用于在不同类型之间进行转换,以下是对这两种转换方式的详细解释和示例说明,感兴趣的朋友跟随小编一起看看吧
    2024-05-05
  • C#使用SqlSugarClient进行数据访问并实现了统一的批量依赖注入(示例代码)

    C#使用SqlSugarClient进行数据访问并实现了统一的批量依赖注入(示例代码)

    M为 BaseDto 请用C# 给出一个案例,支持不同表对应不同的业务逻辑层,然后不同仓储实例,不同表的业务,都实现统一的批量依赖注入,下面通过示例给大家演示如何使用SqlSugarClient进行数据访问,并实现了统一的批量依赖注入,感兴趣的朋友跟随小编一起看看吧
    2024-05-05
  • C#如何消除验证码图片的锯齿效果

    C#如何消除验证码图片的锯齿效果

    这篇文章主要为大家详细介绍了C#如何消除验证码图片的锯齿效果,有无锯齿主要依靠一句代码,想要知道的朋友可阅读下文
    2016-09-09
  • C#正则表达式转义字符介绍

    C#正则表达式转义字符介绍

    正则表达式,又称正规表示法、常规表示法。这篇文章主要介绍了C#正则表达式转义字符介绍的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2016-07-07
  • C#实现的字符串转MD5码函数实例

    C#实现的字符串转MD5码函数实例

    这篇文章主要介绍了C#实现的字符串转MD5码函数,结合简单实例形式分析了C#字符串的转换、遍历、加密等操作技巧,需要的朋友可以参考下
    2016-07-07
  • 深入解析c#中枚举类型的定义与使用

    深入解析c#中枚举类型的定义与使用

    以下是对c#中枚举类型的定义与使用进行了详细的分析介绍,需要的朋友可以过来参考下
    2013-08-08

最新评论