1

我有以下类定义:

 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 访问器不可访问。

我在这里想念什么?

4

4 回答 4

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
    }
}
于 2012-10-12T15:45:47.203 回答
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
      }
 }
于 2012-10-12T15:46:32.697 回答
1

你可以试试Length property

于 2012-10-12T15:46:59.327 回答
0

当 Select 扩展为您获取索引时,为什么还要担心索引:

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

*/
于 2012-10-12T15:50:04.990 回答