当前位置: 代码迷 >> 综合 >> IndexOf、LastIndexOf、Substring截取字符串区别
  详细解决方案

IndexOf、LastIndexOf、Substring截取字符串区别

热度:4   发布时间:2023-12-15 06:59:48.0

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位字符

PageData  as = PolicyAndPlanService.listPagebyPlanId(pd);
pd.put("PlanList", as);
String strDOCURL = as.getString("DOCURL");
strDOCURL = strDOCURL.substring(strDOCURL.lastIndexOf('\\')+1,strDOCURL.length()); 
pd.put("subDOCURL", strDOCURL);//截取文件名

总结:

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

  相关解决方案