質問

System.Windows.Forms.TextBoxコントロール(WinForms)、VS 2008に大きなテキストがあります。

テキストを見つけて、そのテキストが見つかった行番号を選択します。

サンプル、

私は太った大きなテキストを持っています、そして、私は「エラー・エン・リネア」を見つけます、そして、私はテキストボックスマルチラインで行番号を選択したいです。

string textoLogDeFuenteSQL = @"SQL*Plus: Release 10.1.0.4.2 - Production on Mar Jun 1 14:35:43 2010

Copyright(c)1982、2005、Oracle。全著作権所有。

********もっとテキスト************

Conectado A:Oracle Database 10G Enterprise Editionリリース10.2.0.4.0-64ビット生産、パーティション、データマイニング、実際のアプリケーションテストオプション

WHERE LAVECODIGO = 'CO_PREANUL'

エラーenlínea2:

ORA-00904: "" lavecodigo "":識別装置no v?lido

INSERT INTO COM_CODIGOS

エラーenlínea1:

Ora-00001:Restricciónúnica(xaco.inx_com_codigos_pk)violada ";

********もっとテキスト************

それに関するサンプルコードはありますか?

役に立ちましたか?

解決

あなたは見たいかもしれません textboxbase.getLineFromCharIndex 方法。このメソッドは、テキストボックス内の文字位置の行数を取得します。

string str = textBox2.Text;

            int index = textBox1.Text.IndexOf(str);

            if (index !=-1)
            {                

              int  lineNo = textBox1.GetLineFromCharIndex(index);
            }

「このメソッドを使用すると、メソッドのインデックスパラメーターで指定された文字インデックスに基づいて行番号を決定できます。コントロールのテキストの最初の行は値ゼロを返します。GetLineFromCharIndexメソッドは、インデックス付き文字がある物理行番号を返します。コントロール内にあります。」

他のヒント

編集: これは、検索されたテキストの発生のみを見つけます。使用数を計算するには フレドリックの答え。

 using System.Text.RegularExpressions;

 public static void FindErrorInText(string input)
 {
   Regex rgx = new Regex("ERROR en linea \d*", RegexOptions.IgnoreCase);
   MatchCollection matches = rgx.Matches(input);
   if (matches.Count > 0)
   {
     Console.WriteLine("{0} ({1} matches):", input, matches.Count);
     foreach (Match match in matches)
        Console.WriteLine("   " + match.Value);
   }
 }
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top