C#的String.LastIndexOf 方法

发布时间:2024年01月11日

????????返回指定 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 值。

2.示例

?

四、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



*/

文章来源:https://blog.csdn.net/wenchm/article/details/135514266
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。