2017-02-26 21 views
1

数値を含む文字列を効果的に置き換えるコードを探しています。しかし、数字はそれをよりよく説明するためにファイルの乱数を含む文字列を置き換えます。

など....のいずれかまたはイン間だから、2刻みで0.502.200.500.520.62することができ、私のプログラムは、設定(テキスト)で行を置き換えていますファイル。ここでは、プログラムの他の部分にどのように使用したかの例を示します。これはトラックバーコントロールにリンクされているため、単一の選択された値で数百の異なる値を検索することを意味しますが、もちろん非常に非効率的です。私は値を置き換えるより効率的な方法を探しています。ここで3つの可能な値のいずれかを挿入する前の例である:

ReWriteFile = ReWriteFile 
    .Replace(" clipmapScale:r=0.5", " clipmapScale:r=1.5") 
    .Replace(" clipmapScale:r=1", " clipmapScale:r=1.5"); 

この制御は、3つの可能な値(0.5、1.0、1.5)を有していたが、私の他のコントロールは、85の可能な値を有しています。

文字列から数字を取得して置き換えて書き戻す方法がある場合は、私はちょうどそれを学ぶようになったので、私はC#に流暢ではありません(Uni学生ここ)。

[0-9、。、]などの指定された文字列でキャッチするかもしれません。

+0

置き換えのルールは明確ではありません。既存の番号をすべて事前に定義した値に置き換えたいのですか? (0.5または1が両方1.5になる)または違うルールがありますか? – Steve

+0

申し訳ありませんが、私はそれをとてもうまく説明しませんでした。私は以下のリストにある '@" \ d + \。\ d + ";"という形式の値を置き換えたいと思っていました。それを置き換える値は、トラックバーの.Valueプロパティから受け取ります。 私は現時点でこれを持っています: 'string SelectedValue = trkTerrainQualityVal.Value.ToString(); 文字列パターン= @ "\ d + \。\ d +"; string search = "clipmapScale:r ="; var m = Regex.Replace(検索、パターン、SelectedValue); ' – Lewis

答えて

2

あなただけの新しい番号(実測値で計算しない)と、文字列内のすべての小数を交換したい場合は、もちろん

string newValue = "1.5"; 
// Matches any number followed by a dot and then another number 
string pattern = @"\d+\.\d+"; 
string search = "..... clipmapScale:r=0.5 clipmapScale:r=1.0 ....."; 
var m = Regex.Replace(search, pattern, newValue); 
Console.WriteLine(m); 

を交換するために、単純な正規表現表現し、ちょうど1呼び出しですあなたはclipmapScaleテキストの後に数字だけにマッチした部分を制限したい場合は、その目的のためにRegular Expressionを使用することができます

string newValue = "clipmapScale:r=1.5"; 
string pattern = @"clipmapScale:r=\d+\.\d+"; 
+0

はい、私はこれを今理解しています、ありがとう! :) – Lewis

1

に、あなたが変更することができます。すべての10進数を#文字に置き換えたいとします。次のコードスニペットを使用できます。

 string input = "this0.4is7.8some0.89input"; 
     Regex regex = new Regex(@"\d+\.\d+"); 
     var s =regex.Replace(input, "#"); 
     Console.WriteLine(s); 
関連する問題