§ ITPOW >> 文档 >> C#

字符串截取参数范围-C# 的 Substring

作者:vkvi 来源:ITPOW(原创) 日期:2017-4-30

C# Substring 常用有两个参数。

startIndex:[0, 字符串长度]

  • 允许的最小值:0。

  • 允许的最大值:字符串长度。注意是字符串长度,不是字符串长度 - 1。实际使用中,我们会发现,这还真有用,省去了我们一道判断。比如:

string s = "abc-123";
int pos = s.IndexOf("-");
if (pos >= 0)
{
	string r = s.Substring(pos + 1);
}

如果 s 不是 abc-123,而是 abc-,上面的代码也不会报错。

顺便说一下,刚刚越界,其值为空(零长度字符串),不是 null。如下:

var s = "1";
Response.Write(s.Substring(1) == ""); // True。

length:[0, 字长串长度 - startIndex]

  • 允许的最小值:0。此时返回结果为零长度字符串。

  • 允许的最大值:startIndex + length 不超过字符串长度。

string s = "1234";
Console.Write(s.Substring(2, 3)); // 出错

综合来看

Substring 的 2 个参数:只有第 1 个参数,其指向可以向右越界 1 个,其他情况都必须直接指向或间接指向字符串内部。

相关文章