2011-02-05 13 views
3

を含む行を置き換えます。私は、特定のフレーズを含む行全体を置き換える方法を探しています。 たとえば、文字列は次のようになります。文字列:私はmutilineテキストボックスからコピーした文字列を持っている単語

Lorem ipsum dolor sit amet, 
consectetur adipiscing elit. 
Suspendisse egestas. 

だから私はそうresoultは次のようになり、新しい行enim vehicula pellentesque.と例のフレーズelitのために含まれている行全体を交換する方法を見つけたいと思います:

Lorem ipsum dolor sit amet, 
enim vehicula pellentesque. 
Suspendisse egestas. 

それを行うための簡単な方法はありますか? 、あなたをあなただけの文字列の行を表すを扱っている場合は

textBox.Lines = textBox.Lines 
         .Select(line => line.Contains("elit") 
           ? "enim vehicula pellentesque." : line) 
         .ToArray(); 

:あなたはテキストは、あなたができることを含むすべての行を置き換えるために探しているなら

おかげ

+0

「すぐに対応する方法はありますか? 」とはどういう意味ですか? –

+0

http://www.regular-expressions.info/dotnet.htmlを参照してください。ちょっと古いですが、依然として関連性の高いサイトです。そこに時間を過ごすと、プログラマーがより良くなるでしょう。そして、ちょうどC#ではありません... –

+0

@ミッチェル小麦:遅い方法に多分笑:) – naveen

答えて

7
var regex = new Regex(@"^.*\Welit\W.*$", RegexOptions.Multiline); 
string result = regex.Replace(original, "enim vehicula pellentesque."); 

RegexOptions.Multilineがキーです。文字列の先頭と末尾ではなく、^(=「開始」)と$(=「終了」)を行の先頭と末尾に適用すると言います。

\Welitの両側にある非単語文字を探します。 fooelitは一致しませんが、foo elitとなります。

+0

'\ W'の代わりに' \ b'を使うことができます。 –

8

string text = ... 

var lines = from line in text.Split 
       (new[] { Environment.NewLine }, StringSplitOptions.None) 
      select line.Contains("elit") ? "enim vehicula pellentesque." : line; 

string replacedText = string.Join(Environment.NewLine, lines.ToArray()); 

EDIT:の線に沿って何かを行うことができますJGはコメントで指摘するように、あなたが特定の単語elitを探しているなら、これは動作しません。この場合、単純なstring.Containsとは異なる述語が必要です。

line.Split().Contains("elit") // pseudo-overload of String.Split 

あなたはあなたの定義に依存手の込んだフィルタ(例えばDomenicの答えのように正規表現を)必要があるかもしれません:たとえば、あなたはそれらの一つがブラックリストに載せ単語である場合、すべての空白文字で行を分割してチェックすることができます'ワード'。

+2

#wow私はいつものforeachを書いていました.LINQをよく使っています。 –

+1

+1:shekahrが言ったように、私もtextboxについて知りませんでした。 – naveen

+0

これは、例えば、 'elite'を含む行を誤って置き換えることにもなります。 –

1
private void button1_Click(object sender, EventArgs e) 
    {   
     foreach (var line in textBox1.Lines) 
     { 
      if (line.Contains("hello")) 
      { 
       textBox1.Text= textBox1.Text.Replace(line, "This is new line"); 
      } 
     } 
    } 
関連する問題