2012-06-19 45 views
0

我有一個變化,每次它輸入,因爲它是一個搜索查詢,這樣的例子可能是Z00044XLE1311,但是我希望做的是同樣的產品可以退換,如果客戶刪除所有的字符串在0(總有前幾個字母后零),但是我似乎並沒有能夠做到這一點,我想基本上是搜索Z * 44XLE1311代替。更換無需更換開始

我寧願做這個使用正則表達式,因爲這是我目前的搜索功能是如何實現的。我知道我應該使用替代,但我不確定如何正確使用這個問題。

我當前的代碼是,

   if (!string.IsNullOrEmpty(base.RemoveCharacters)) 
       { 
        var regex = new Regex(string.Format("[{0}]+", base.RemoveCharacters)); 
        text = regex.Replace(text, string.Empty); 
       } 

       if (Regex.IsMatch(text, "^[a-z]+00+", RegexOptions.IgnoreCase)) 
       { 
        text = new Regex("0{1,}", RegexOptions.IgnoreCase).Replace(text, "00*", 1); 
       } 
       else 
       { 
        if (Regex.IsMatch(text, "^[a-z]+", RegexOptions.IgnoreCase)) 
        { 
         text = new Regex("[A-Z]{1,}", RegexOptions.IgnoreCase).Replace(text, "[A-Z]*", 1); 
        } 
        URL = WebUtilities.AddToQueryString(URL, box.Key, Page.Server.UrlEncode(text)); 
      } 
     } 
+0

改寫你的問題。我只是明白,你想要第一個數字被刪除後的三個0。 – Noli

+0

我不明白什麼是你的目標在這裏與正則表達式,因爲它不是很清楚,我當前的搜索功能是如何工作的...?這個問題有點分散。儘可能澄清一點,如果可能的話。 – Less

回答

0

其實,我有這個工作現在,我已經使用:

   text = Regex.Replace(text, "^([a-z]+)0*([1-9][0-9]*)", @"$1 0\* $2", RegexOptions.IgnoreCase); 
1

你可以做到以下幾點:

Regex.Replace(text, @"(?i)(?<=^[a-z])0+", ""); 
+0

這不起作用,因爲它需要一個我不想包含的初始值0。 –

+0

然後我不太清楚你使用的格式。我理解你的問題,就好像你想在第一個字母后直接刪除前導零。這究竟是什麼。 – Joey

+0

不,先生,基本的問題是,該代碼可以作爲inputed或Z000ECEL和ZECEL我希望它返回相同的結果,請查看我的回答我下面貼。 –