非正規表現ソリューションを実装する方が簡単かもしれません:
var numberedLines = input.Text
.Split(new string[] { "\r\n", "\n" }, StringSplitOptions.None)
.Select ((line, index) => (index + 1) + " " + line)
.ToArray();
var result = string.Join(Environment.NewLine, numberedLines);
output.Text = result;
最初の行はstring.Split()、行の前後の文字列を配列に分割するために使用します。次に、LINQ.Selectメソッドを使用して、配列内の各要素に関数を適用します。この場合、各行の先頭に行番号とスペースを追加します (index + 1インデックス値は 0 ベースであるため、必要です)。次に、string.Joinメソッドを使用して配列を 1 つの文字列に戻します。
デモ: http://ideone.com/DrFTfl
MatchEvaluatorデリゲートを使用して行番号を適用する場合、実際には正規表現で実行できます。
var index = 1;
output.Text = Regex.Replace(input.Text, "^",
(Match m) => (index++).ToString() + " ",
RegexOptions.Multiline);
^通常、パターンは式の先頭に一致します。ただし、 ではRegexOptions.Multiline、各行の先頭に一致します。#次に、置換のために、行の先頭に + スペースを追加し、次の行のインデックス カウンターをインクリメントするデリゲート (無名関数) を使用します。
デモ: http://ideone.com/9LD0ZY