C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト


(過去ログ 90 を表示中)
■53370 / )  Re[2]: Regexで特定の文字の位置をカウントする
□投稿者/ やじゅ (1723回)-(2010/09/11(Sat) 12:45:49)
やじゅ さんの Web サイト
2010/09/11(Sat) 15:31:39 編集(投稿者)
> MatchCollection を for ループで巡回して、それぞれの Match の Value を確認して、
> 合ってるならそのときのコレクションのインデックス(は 0 ベースだから +1 したりとか)。

コード化すると↓、もっと楽な方法があるかも。
int cnt = 1;
foreach (Match m in mc) {
  if (m.Value == "for") break;
  cnt++;
}

http://mop.fya.jp/te2/efia/27.html

追記:Linqを使ってみた。
const string s = "This is a sample code for regex.";

MatchCollection mc = Regex.Matches(s, @"[\S]+");
int i = 1;
var query = from Match v in mc select new { Index = i++, Value = v.Value };
int index = (from w in query where w.Value == "for" select w.Index).First();
MessageBox.Show(String.Format("Count = {0} , Index = {1}", mc.Count, index));

↓

追記:IndexOf変更してみた。
const string s = "This is a sample code for regex.";

MatchCollection mc = Regex.Matches(s, @"[\S]+");
List<string> ql = (from Match v in mc select v.Value).ToList<string>();
MessageBox.Show(String.Format("Count = {0} , Index = {1}", mc.Count, ql.IndexOf("for") + 1));

返信 編集キー/


管理者用

- Child Tree -