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 に答える