两者之间的差异是什么?为什么一个工作而另一个不?代码过滤以.StartWith("L_01")
开头的文件名。我只能使用.Substring(0,4) == "L_01"
获得结果,但不能使用// Return results
Directory.GetFiles(path).Where(p =>
System.IO.Path.GetFileNameWithoutExtension(p).StartsWith("L_01"));
// Return no result
Directory.GetFiles(path).Where(p =>
System.IO.Path.GetFileNameWithoutExtension(p).Substring(0,4) == "L_01"))
获得结果,我认为两者之间没有任何区别。
this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN|WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);
答案 0 :(得分:5)
嗯,首先
.StartsWith("L_01")
更好,自第二次
.Substring(0,4) == "L_01")
在短(少于4
个字符长)文件名(例如L.xml
https://msdn.microsoft.com/en-us/library/aka44szs(v=vs.110).aspx
ArgumentOutOfRangeException
startIndex加长度表示a 位置不在此实例中。
抛出异常(并且吞下,因为看不到),例如
try {
...
var files = Directory
.GetFiles(path)
.Where(p => Path.GetFileNameWithoutExtension(p).Substring(0,4) == _01"));
foreach (var file in files) {
...
}
}
catch {
// on exception thrown the loop will be broken and this code will be executed
}
你可以输掉一些文件;想象一下,Directory.GetFiles(path)
按此顺序返回文件:
L_01.xml <- you've got it
L_1.xml <- exception here
L_011.xml <- this will be lost
你只有L_01.xml
继续