2017-06-03 11 views
2

';'文字は、マルチラインテキストボックス内の現在のカーソル位置の後ろにあります。すべてではない ';'現在のカーソル位置の直後。現在のカーソル位置の後に特定の文字を見つける

現在、私は以下のようにしています。すべての行を ';'文字のイムループと出口ループから見つかった場合。私は 'if'コマンドに何を書いたらいいですか?これを行う簡単な方法があれば、私と共有してください。

//uteSQL is my multiline textbox 

string[] lines = this.uteSQL.Text.Split(new Char[] { '\n' }, 
StringSplitOptions.RemoveEmptyEntries); 

int countLines = lines.Length; 

int cursorPos = uteSQL.SelectionStart; 

    for(int t = uteSQL.SelectionStart; t <= countLines ; t++) 
    { 
    if (find ';' character that i want every lines) 
     { 
      -- if it finds get the line number 
      break; 
     } 
    } 
+0

これは何ですか? Webフォーム? Winforms? MVC?あなたは 'cursorPos'をまったく使用しますか? 'uteSQL'はどのような型ですか? – Andrew

答えて

2

私が見つけたいです ';'文字は、マルチラインテキストボックス内の現在のカーソル位置の後ろにあります。

これを実現するにはIndexOfを使用できます。

var nextCharIndex = this.uteSQL.Text.IndexOf(";", uteSQL.SelectionStart); 

見つかった文字の行インデックスを検索するには、次の操作を行います。

var nextCharIndex = this.uteSQL.Text.IndexOf(";", uteSQL.SelectionStart); 
var lineIndexOfChar = nextCharIndex < 0 
    ? -1 
    : this.uteSQL.Text.Substring(0, nextCharIndex) 
     .Split(new [] { Environment.NewLine }, StringSplitOptions.None).Length - 1; 
+0

行番号が与えられていない –

+0

@SergeyBerezovskiy行を数えるための部分を追加しました – NtFreX

0
int line = uteSQL.Text.Take(uteSQL.SelectionStart).Count('\n'.Equals) + 1; 

int index = uteSQL.Text.IndexOf(';', uteSQL.SelectionStart); 

int column = index - uteSQL.Text.LastIndexOf('\n', index); 
関連する問題