为什么是“abcd”。StartsWith(“”) 返回 true?
2022-08-31 11:34:01
标题就是整个问题。有人能给我一个为什么会发生这种情况的原因吗?
标题就是整个问题。有人能给我一个为什么会发生这种情况的原因吗?
是 - 因为它确实以空字符串开头。实际上,空字符串在逻辑上出现在每对字符之间。
这样说吧:你能给出什么“开始”的定义来排除这种情况吗?以下是“开头为”的简单定义,但不会:
“如果 x 的第一个字符与 y 的字符匹配,则 x 以 y 开头。y.Length
另一个(等效的)定义:
“x 以 y 开头,如果x.Substring(0, y.Length).Equals(y)
"
我将尝试详细说明Jon Skeet所说的话。
假设 x、y 和 z 是字符串,+ 运算符实际上是串联,那么:
如果我们能拆分 z 来写 z = x + y,这意味着 z 从 x 开始。由于每个字符串 z 都可以拆分为 z = “” + z,因此每个字符串都以 “” 开头。
因此,因为(“”+ “abcd”)==“abcd”,所以“abcd”以“”开头