2011-08-01 21 views
0

C#のwinformsでメモ帳プログラムを作成しています。私はどのように私がすべての操作を交換/交換を実行することができるかに関するいくつかのアイデアを提案してください。メモ帳でのすべての操作の置換/置換

+0

どれ詳細は?どんな種類のオプションをサポートしますか?大文字/小文字の区別?また、何を試してみましたか? –

+0

私はRichtextBox.Textのテキストを置き換えて置き換える最初のインデックスを検索しようとしています。その後、それから部分文字列を作成し、残りの文字列の最初のインデックスを再度検索しますが、いくつかの問題が発生しています。ここでは、大文字と小文字を区別するすべての操作を置換/置き換えようとしています。 – VIKRAM

答えて

1
Console.WriteLine("TEXT".Replace("EX","XE")); 

を使用してメカニズムを置き換える作り直し:コメント欄での質問の

var s="TEXT"; 
Console.WriteLine(s.Replace("EX","XE")); 

シンプルな実装:

 Console.WriteLine("TEXT".IndexOf("EX")); 
     var s="TEXT"; 
     var f = "EX"; 
     var r = "XE"; 
     var i = s.IndexOf(f); 
     s=s.Remove(s.IndexOf(f), f.Length); 
     s = s.Insert(i, r); 
     Console.WriteLine(s); 

単純な拡張メソッドを使用して後方に置き換えるには、上記を逆にして.Reverse();を使用します。

メモ.IndexOf(f)には、ステッピングに使用できる開始値.IndexOf(f、start)があります。

+0

このことは、実際のメモ帳のように個々の文字列をfindnextで一つずつ置き換えたい場合はどうでしょうか? – VIKRAM

+0

@VIKRAM:1つ1つを実装する方法に関する簡単なアイデアについては上記を参照してください。 – sgtz

+0

私はこれが最も効率的だと主張しているわけではありませんが、小さな要求に対してはうまくいくはずです。すなわちstringは不変型であるため、各insert/remove/replaceはまったく新しい文字列を作成します。 – sgtz

1

[Ctrl] + [H]ショートカットをエミュレートして[置換]ダイアログを表示し、次に[PInvoke]を使用して[Find what]および[Replace with]の編集コントロールのウィンドウハンドルを取得することができます。最後に2つのエディットコントロールのテキストを変更し、ボタンをエミュレートして[すべて置換]をクリックします。使用

可能なAPIが含まれます:

GetWindowText() 
SetWindowText() 
SetForeGroundWindow() 
SendKeys.Send() 
関連する問題