为什么“abcd”.StartsWith(“”)返回true?标题是整个问题。有人能告诉我为什么会这样吗?
3 回答
紫衣仙女
TA贡献1839条经验 获得超15个赞
是的 - 因为它确实以空字符串开头。实际上,空字符串逻辑上发生在每对字符之间。
这样说:你可以给出什么样的“以...开头”的定义会排除这种情况?以下是“以...开头”的简单定义:
“如果x的第一个y.Length
字符与y 匹配,则x 以y开头。”
另一种(等效的)定义:
“如果是,则以y开头x.Substring(0, y.Length).Equals(y)
”
慕容708150
TA贡献1831条经验 获得超4个赞
我将试着详细说明Jon Skeet所说的话。
假设x,y和z是字符串,而+运算符实际上是连接,那么:
如果我们可以将z分割为写z = x + y,这意味着z以x开头。因为每个字符串z都可以拆分为z =“”+ z,所以每个字符串都以“”开头。
所以,因为(“”+“abcd”)==“abcd”,所以“abcd”以“”开头
米脂
TA贡献1836条经验 获得超3个赞
此方法将value参数与此字符串开头的子字符串进行比较,该字符串与value的长度相同,并返回一个值,指示它们是否相等。要相等,value必须是空字符串(Empty),对此同一实例的引用,或者匹配此实例的开头。
如果参数表示的字符序列是此字符串表示的字符序列的前缀,则返回true;否则返回false。否则是假的。另请注意,如果参数为空字符串或等于此equals(Object)方法确定的String对象,则返回true。
添加回答
举报
0/150
提交
取消