平台网站建设公司,广东深圳网站,wordpress 内网ip,睢县做网站字符串的截取匹配操作在开发中非常常见#xff0c;比如下面这个示例#xff1a;我要匹配查找出来字符串数组中以“abc”开头的字符串并打印#xff0c;我下面分别用了两种方式实现#xff0c;代码如下#xff1a; using System;
namespace ConsoleApp23{ class Progra…字符串的截取匹配操作在开发中非常常见比如下面这个示例我要匹配查找出来字符串数组中以“abc”开头的字符串并打印我下面分别用了两种方式实现代码如下 using System;
namespace ConsoleApp23{ class Program { static void Main(string[] args) { string[] strs new string[] { abc123 , abc456 ,ab123,a12345 };//方法1 foreach (var str in strs) { if (str.Substring(0, 3) abc) { Console.WriteLine(str); } } Console.WriteLine();//方法2 foreach (var str in strs) { if (str.StartsWith(abc)) { Console.WriteLine(str); } }Console.ReadKey(); } }}运行结果如下 诚然两种方法都输出了正确的结果。 那么既然两种方式都能实现这两种方法有没有什么区别呢当然有的而且大多数时候一个老练的程序员都会用StartsWith而不是Substring为什么呢 往下看我把数据源修改下 static void Main(string[] args) {
string[] strs new string[] { abc123 , abc456 ,ab123,a12345 ,abc,ab}; //方法1 foreach (var str in strs)
{ if (str.Substring(0, 3) abc) { Console.WriteLine(str); }
}
Console.WriteLine();
//方法2 foreach (var str in strs)
{ if (str.StartsWith(abc)) { Console.WriteLine(str); }
}
Console.ReadKey();
}
运行后方法一直接崩了但是方法2则可以正确运行出来结果 看一下Substring的用法解释startIndex 加 length 指示不在此实例内的位置。- 或 - startIndex 或 length 小于零。所以当字符串小于你要截取的长度时你如果没用try catch去捕获异常代码就崩溃了.
// // 摘要:
// 从此实例检索子字符串。子字符串从指定的字符位置开始且具有指定的长度。
// 参数: // startIndex: // 此实例中子字符串的起始字符位置从零开始。 // // length: // 子字符串中的字符数。 // // 返回结果: // 与此实例中在 length 处开头、长度为 startIndex 的子字符串等效的一个字符串如果 System.String.Empty 等于此实例的长度且 // startIndex 为零则为 length。 // // 异常: // T:System.ArgumentOutOfRangeException: // startIndex 加 length 指示不在此实例内的位置。- 或 - startIndex 或 length 小于零。 [SecuritySafeCritical] public String Substring(int startIndex, int length);
所以我们需要慎用Substring如果非要用一定需要进行异常处理。