String.indexOf()、lastIndexOf()、substring()的用法

转载   在指定位置拼接和插入字符串

 String.IndexOf

  String.IndexOf 方法 (Char, Int32, Int32)
报告指定字符在此实例中的第一个匹配项的索引。搜索从指定字符位置开始,并检查指定数量的字符位置。
String.IndexOf(value, startIndex, count)

参数
value:要查找的 Unicode 字符。 
startIndex:搜索起始位置。 
count:要检查的字符位置数。
返回值(Int32):
如果找到该字符,则为 value 的索引位置;否则如果未找到,则为 -1。

 

 

String.LastIndexOf

String.LastIndexOf 方法
报告指定的 Unicode 字符或 String 在此实例中的最后一个匹配项的索引位置。
 

名称说明 
String.LastIndexOf (Char)报告指定 Unicode 字符在此实例中的最后一个匹配项的索引位置。
String.LastIndexOf (String)报告指定的 String 在此实例内的最后一个匹配项的索引位置。
String.LastIndexOf (Char, Int32)报告指定 Unicode 字符在此实例中的最后一个匹配项的索引位置。该搜索从指定字符位置开始。
String.LastIndexOf (String, Int32)报告指定的 String 在此实例内的最后一个匹配项的索引位置。该搜索从指定字符位置开始。
String.LastIndexOf (String, StringComparison)报告指定字符串在当前 String 对象中最后一个匹配项的索引。一个参数指定要用于指定字符串的搜索类型。
String.LastIndexOf (Char, Int32, Int32)报告指定的 Unicode 字符在此实例内的子字符串中的最后一个匹配项的索引位置。搜索从指定字符位置开始,并检查指定数量的字符位置。
String.LastIndexOf (String, Int32, Int32)报告指定的 String 在此实例内的最后一个匹配项的索引位置。搜索从指定字符位置开始,并检查指定数量的字符位置。
String.LastIndexOf (String, Int32, StringComparison)报告指定字符串在当前 String 对象中最后一个匹配项的索引。参数指定当前字符串中的起始搜索位置,以及要用于指定字符串的搜索类型。
String.LastIndexOf (String, Int32, Int32, StringComparison)报告指定的 String 对象在此实例内的最后一个匹配项的索引位置。参数指定当前字符串中的起始搜索位置、要搜索的当前字符串中的字符数量,以及要用于指定字符串的搜索类型。



示例:
string str = "深圳市盈基实业有限公司国际通邓事文*深圳市盈基实业有限公司国际通邓事文";
Label1.Text = str.LastIndexOf("邓文").ToString();//返回-1
Label1.Text = str.LastIndexOf("邓").ToString();//返回32

Label1.Text = str.LastIndexOf("邓",8).ToString();//返回-1
Label1.Text = str.LastIndexOf("邓",20).ToString();//返回14
Label1.Text = str.LastIndexOf("邓",33).ToString();//返回32
说明:在指定的范围内查找字符,这个范围是上面的输入的参数,理解为,从索引0开始到指定的数值位置范围内查找最后一个匹配的的字符串的位置。示例中,0-8中没有“邓”字,所以返回-1,0-20范围中,有一个“邓”字在索引14位置上,0-33范围中有两个“邓”字,因为LastIndexOf是返回最后一个匹配项索引位置,所以返32,而不是14。

 

String.Substring

String.Substring 方法
从此实例检索子字符串。 

名称说明
String.Substring (Int32)从此实例检索子字符串。子字符串从指定的字符位置开始。
String.Substring (Int32, Int32)从此实例检索子字符串。子字符串从指定的字符位置开始且具有指定的长度。


示例:
string str = "深圳市盈基实业有限公司国际通邓事文*深圳市盈基实业有限公司国际通邓事文";
Label1.Text = str.Substring(11);//返回 “国际通邓事文*深圳市盈基实业有限公司国际通邓事文”
Label1.Text = str.Substring(11,7);//返回 “国际通邓事文*”

Label1.Text = str.Substring(str.Length-3,3); // 返回邓事文,即截倒数3位字符

总结:

IndexOf、LastIndexOf都是返回一个位置,是个整数值;找不到都返回 -1;
IndexOf是从左向右查,LastIndexOf是从右向左查,不管是IndexOf还是LastIndexOf,索引序列都是从左到右的(起始值是0)
Substring是字符串截取,返回值是一个截取后的字符串。

<think>好的,我现在需要帮助用户解决关于字符串的lastIndexOf()方法的使用和示例的问题。首先,我需要回忆一下这个方法的基本功能和常见用法。用户可能想在一个字符串中查找某个子字符串最后一次出现的位置,比如在文件路径中找最后一个斜杠,或者在日志中找最后一次出现的特定关键字。 首先,我应该确认lastIndexOf()方法在不同编程语言中的实现是否类似。根据用户提供的引用,之前提到过Java的Iterable接口,所以用户可能是在Java环境中工作。Java中的String类确实有lastIndexOf()方法,有多种重载形式,比如接受字符、字符串、以及从指定位置开始查找的参数。接下来,我需要整理这些方法的不同用法,并给出具体的示例。例如,查找字符最后一次出现的位置,查找子字符串最后一次出现的位置,以及指定起始索引的情况。同时,要注意处理找不到的情况,返回-1,这时候需要提醒用户进行判断,避免出现错误。然后,用户可能需要实际应用的例子,比如提取文件扩展名或解析URL路径。这时候需要构造一些常见的场景,用代码示例展示如何正确使用lastIndexOf()方法。例如,在文件路径中找最后一个点来分割文件名和扩展名,或者在URL中找最后一个斜杠后的资源名。 此外,还需要考虑用户可能遇到的问题,比如大小写敏感性问题。Java的lastIndexOf()是区分大小写的,如果用户需要不区分大小写的查找,可能需要先将字符串转换为统一大小写,或者使用其他方法。这也是需要提及的注意事项。 最后,生成相关问题,帮助用户深入理解,比如和indexOf()的区别、处理多个字符的情况、性能考虑等。这些相关问题可以引导用户进一步探索,确保他们能够全面掌握这个方法的应用。总结一下,我需要分步骤解释lastIndexOf()的不同用法,提供示例代码,注意事项,以及实际应用场景,并生成相关问题供用户参考。同时,确保回答结构清晰,符合用户的要求,使用正确的中文表达,并且LaTeX格式正确。</think>### `lastIndexOf()`方法详解 `lastIndexOf()`用于查找字符串中指定字符或子字符串最后一次出现的位置,返回索引值(从0开始计数)。若未找到则返回-1。以下是具体用法和示例: #### 1. 查找字符最后一次出现的位置 语法:`str.lastIndexOf(int char)` ```java String path = "/usr/local/bin/python"; int lastSlash = path.lastIndexOf('/'); // 返回14 System.out.println("最后一个/的位置:" + lastSlash); // 输出14 ``` #### 2. 查找子字符串最后一次出现的位置 语法:`str.lastIndexOf(String substr)` ```java String log = "ERROR: 404; WARN: Disk full; ERROR: 500"; int lastError = log.lastIndexOf("ERROR"); // 返回24 System.out.println("最后一个ERROR的位置:" + lastError); // 输出24 ``` #### 3. 指定起始位置的反向查找 语法:`str.lastIndexOf(String substr, int fromIndex)` ```java String text = "abracadabra"; int lastA = text.lastIndexOf('a', 7); // 在索引0-7范围内反向查找 System.out.println("第7位前最后一个a的位置:" + lastA); // 输出3 ``` #### 实际应用示例 **场景1:提取文件扩展名** ```java String filename = "report.final.version.pdf"; int dotIndex = filename.lastIndexOf('.'); if(dotIndex != -1){ String ext = filename.substring(dotIndex+1); System.out.println("文件扩展名:" + ext); // 输出pdf } ``` **场景2:解析URL路径** ```java String url = "https://example.com/blog/java-tutorial"; int lastSlash = url.lastIndexOf('/'); String resource = url.substring(lastSlash+1); System.out.println("资源名称:" + resource); // 输出java-tutorial ``` ### 注意事项 1. **区分大小写**:`lastIndexOf()`是大小写敏感的 ```java String s = "Hello World"; System.out.println(s.lastIndexOf("h")); // 返回-1 ``` 2. **特殊字符处理**:需要转义的字符(如`$`、`\`)要使用双反斜杠 3. **性能优化**:在循环中使用时,建议先检查返回值是否为-1
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值