0

我有一个字符串,每次输入时都会发生变化,因为它是一个搜索查询,一个例子可能是 Z00044XLE1311,但是我希望这样做,如果客户删除所有的 0,可以返回相同的产品(后面总是有零前几个字母)但是我似乎无法做到这一点,我想基本上搜索 Z*44XLE1311 代替。

我更喜欢使用 Regex 来执行此操作,因为这就是我当前的搜索功能的完成方式。我知道我应该使用替换,但我不确定如何正确使用它来解决这个问题。

我目前的代码是,

                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));
            }
        }
4

2 回答 2

1

您可以执行以下操作:

Regex.Replace(text, @"(?i)(?<=^[a-z])0+", "");
于 2012-06-19T10:34:10.403 回答
0

I actually have this now working, I have used:

                text = Regex.Replace(text, "^([a-z]+)0*([1-9][0-9]*)", @"$1 0\* $2", RegexOptions.IgnoreCase);
于 2012-06-19T10:51:00.460 回答