Jon*_*eet 163
是的 - 因为它确实以空字符串开头.实际上,空字符串逻辑上发生在每对字符之间.
这样说:你可以给出什么样的"以...开头"的定义会排除这种情况?以下是"以...开头"的简单定义:
"如果x的第一个y.Length字符与y 匹配,则x 以y开头."
另一种(等效的)定义:
"如果是,则以y开头x.Substring(0, y.Length).Equals(y)"
Pet*_*pac 46
我将试着详细说明Jon Skeet所说的话.
假设x,y和z是字符串,而+运算符实际上是连接,那么:
如果我们可以将z分割为写z = x + y,这意味着z以x开头.因为每个字符串z都可以拆分为z =""+ z,所以每个字符串都以""开头.
所以,因为(""+"abcd")=="abcd",所以"abcd"以""开头
Fir*_*aad 17
此方法将value参数与此字符串开头的子字符串进行比较,该字符串与value的长度相同,并返回一个值,指示它们是否相等.要相等,value必须是空字符串(Empty),对此同一实例的引用,或者匹配此实例的开头.
如果参数表示的字符序列是此字符串表示的字符序列的前缀,则返回true;否则返回false.否则是假的.另请注意,如果参数为空字符串或等于此equals(Object)方法确定的String对象,则返回true.
jas*_*son 17
我将从一个更容易理解的相关事实开始.
空集是每个集的子集.
为什么?该定义的子集指出A的一个子集B,如果每一个元素A是一个元素B.相反,如果有一个元素不是元素,A则不是它的子集.BAB
现在修一套B.我将确定空集是其中的一个子集B.我将通过显示空集不是其子集的情况来做到这一点B.如果空集不是其中的子集,B那么我可以找到不在的空集的元素B.但是空集没有任何元素,因此我找不到不存在的元素B.因此,不是空集不是其子集的情况B.因此,空集必须是其子集B.
任何字符串都以空字符串开头.
首先,我们必须就我们对起点的定义达成一致.让我们s和t是string小号我们说s 开头 t,如果s.Length >= t.Length和第一t.Length的字符t匹配的s.也就是说,s.Length >= t.Length并为每个Int32 index这样0 <= index < t.Length,s[index] == t[index]是真实的.相反,我们会说这s不是从t声明开始的
s.Length < t.Length或者s.Length >= t.Length有一个Int32 index这样的0 <= index < t.Length和s[index] != t[index]
是真的.在简单的英语中,s短于t或者,如果没有,则有一个字符t与该字符不匹配的位置相同s.
现在修复一个字符串s.我将建立s以空字符串开头的东西.我将通过显示s不是以空字符串开头的情况来做到这一点.如果s不是以空字符串开头那么s.Length < String.Empty.Length或者s.Length >= String.Empty.Length有Int32 index这样的话0 <= index < String.Empty.Length.但是s.Length >= 0并且String.Empty.Length等于零,因此不可能s.Length < String.Empty.Length成为现实.同样,因为``String.Empty.Length is equal to zero, there is noInt32索引satisfying0 <= index <String.Empty.Length`.因此
s.Length < String.Empty.Length或者s.Length >= String.Empty.Length有Int32 index这样的0 <= index < String.Empty.Length
是假的.因此,s不是以空字符串开头的情况.因此,s必须以空字符串开头.
以下是一个开头的实现,编码为扩展名string.
public static bool DoStartsWith(this string s, string t) {
if (s.Length >= t.Length) {
for (int index = 0; index < t.Length; index++) {
if (s[index] != t[index]) {
return false;
}
}
return true;
}
return false;
}
Run Code Online (Sandbox Code Playgroud)
以上两个粗体事实是空洞真实陈述的例子.它们是真实的,因为定义它们的语句(子集和开头)是空宇宙的通用量化.空集中没有元素,因此空集中的任何元素都不能存在于其他固定集中.空字符串中没有字符,因此不能有字符作为空字符串中的某个位置与其他固定字符串中相同位置的字符不匹配.
Pop*_*lin 11
我们只是说"abcd".StartsWith("")返回false.
若是,则以下表达式eval为,true或false:
("abcd".Substring(0,0) == "")
Run Code Online (Sandbox Code Playgroud)
事实证明,evals为true,所以字符串确实以空字符串开头;-),换句话说,"abcd"的子字符串从位置0开始,0长度等于空字符串"".相当合乎逻辑的imo.
小智 5
为什么"abcd".StartsWith("")返回true?
真正的答案:
它必须是这样的,否则你会遇到这种情况
"".startsWith("") == false
"".equals("") == true
but yet
"a".startsWith("a") == true
"a".equals("a") == true
Run Code Online (Sandbox Code Playgroud)
然后我们又重新获得了Y2K,因为依赖于相同字符串的所有银行软件都会让我们的帐户混乱,突然比尔盖茨将拥有我的财富而且我会拥有他的,该死的!命运对我来说不是那么好.
| 归档时间: |
|
| 查看次数: |
16686 次 |
| 最近记录: |