我有一个字符串,每次输入都会变化,因为它是一个搜索查询,这个例子可能是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 :(得分:1)
您可以执行以下操作:
Regex.Replace(text, @"(?i)(?<=^[a-z])0+", "");
答案 1 :(得分:0)
我实际上现在有了这个,我用过:
text = Regex.Replace(text, "^([a-z]+)0*([1-9][0-9]*)", @"$1 0\* $2", RegexOptions.IgnoreCase);