我有以下类定义:
public static string SplitString(string someText)
{
var queryArray = Regex.Split(someText, "\\s+(?=\\w+)");
foreach (var i in Enumerable.Range(0, queryArray.Count - 1)) {
// Some code
}
}
问题是queryArray.Count给了我以下错误:
属性'System.Array.Count'不能在此上下文中使用,因为get访问器不可访问。
我在这里缺少什么?
答案 0 :(得分:7)
您可以尝试使用Length
属性:
public static string SplitString(string someText)
{
var queryArray = Regex.Split(someText, "\\s+(?=\\w+)");
foreach (var i in Enumerable.Range(0, queryArray.Length - 1)) {
// Some code
}
}
如果代码是这样编写的,那么你的代码可能会更具可读性:
public static string SplitString(string someText)
{
var queryArray = Regex.Split(someText, "\\s+(?=\\w+)");
for (var i = 0; i < queryArray.Length; i++) {
// Some code
}
}
或者像这样:
public static string SplitString(string someText)
{
var queryArray = Regex.Split(someText, "\\s+(?=\\w+)");
foreach (var item in queryArray) {
// Some code
}
}
答案 1 :(得分:1)
Regex.Split
返回一个数组,该数组未定义Count
属性。请改用Length
:
public static string SplitString(string someText)
{
var queryArray = Regex.Split(someText, "\\s+(?=\\w+)");
foreach (var i in Enumerable.Range(0, queryArray.Length - 1)) {
// Some code
}
}
答案 2 :(得分:1)
您可以尝试使用Length property
答案 3 :(得分:0)
为什么在选择扩展程序为您提供索引时会担心索引:
var data = Regex.Split("someText other", "\\s+(?=\\w+)")
.Select((itm, indexer) => string.Format("{0} is index {1}", itm, indexer));
/* Data has 2 strings in the list:
someText is index 0
other is index 1
*/