2013-01-10 71 views
0

所以我有這個字符串:「ID:300,Order:1,Number:30.99,Other:null}」。我正在使用C#。正則表達式 - 刪除一個參數後的數字

我想用正則表達式來隱藏「30.99」從數量「參數」,並與*出於安全考慮更換它,但我我還是新與正則表達式並不能圖出。

「編號」 可以是任何小數形式0到999999999 .......

最終的結果將是「ID:300,順序:1,數量:*,其他:空}「

有人可以幫助我解決這個問題嗎?與單一*

(?<=\bNumber:)\d+(\.\d+)? 

+0

它也可以是'.01'嗎? – fge

+1

這也許是JSON的一個片段? – user7116

+0

@sletterlettervariables不,這是不合法的JSON,因爲成員名稱必須是JSON字符串 – fge

回答

0

可以使用Regex.Replace做到這一點:

string s = Regex.Replace( 
    "ID:300,Order:1,Number:30.99,Other:null", 
    @"(?<=Number:).*?(?=,|$)", 
    m => "*"); 
+0

似乎沒有把戲:( – iPeo

+0

@iPeo它在這裏工作,vs2010 – BlackBear

+0

是的!它確實。我的壞!非常感謝! – iPeo

0

Unliked標記的答案,其結果是一個*(ID:300,Order:1,Number:*,Other:null)這個用*代替所有數字和句點。

Console.WriteLine(
     Regex.Replace("ID:300,Order:1,Number:30.99,Other:null}", 
        @"(?<Text>Number\:)(?<Digits>[^,]+)", 
        new MatchEvaluator((mtch) => 
          { 
           return mtch.Groups["Text"].Value + Regex.Replace(mtch.Groups["Digits"].Value, @".", "*"); 
          })) 
          ); 

// Result: 
// ID:300,Order:1,Number:*****,Other:null}