【问题标题】:Replace character with any possible string c#用任何可能的字符串c#替换字符
【发布时间】:2017-01-02 16:26:40
【问题描述】:

假设我有这样的字符串 Test%Test 并且我已经存储了这样的字符串:

Test123Test TestTTTTest Test153jhdsTest 123Test TEST123

所以我想要的是,当我在文本框中输入 Test 时,它会过滤我本身带有 Test 的所有内容,这将使我得到所有字符串,这很容易,但我想输入 Test%Test 并且它需要过滤我本身具有Test[anything]Test 的所有内容(因此结果将是第一个、第二个和第三个字符串)。我该怎么做?

【问题讨论】:

  • 可能有一个很好的正则表达式。但我绝不是正则表达式专家。所以我会用 String.StartsWith 和 String.EndsWith 来解决它。因此,将 seach 项拆分为 '%' 而不是使用两个值
  • % 字符在这里的作用是什么?它是某种通配符吗?分隔符?还是一个字面的“%”?

标签: c# string replace


【解决方案1】:

使用正则表达式的简单解决方案是:

string[] values = new string[] { "Test123Test",
            "TestTTTTest",
            "Test153jhdsTest",
            "123Test",
            "TEST123" };

string searchQuery = "Test%Test";

string regex = Regex.Escape(searchQuery).Replace("%", ".*?");

string[] filteredValues = values.Where(str => Regex.IsMatch(str, regex)).ToArray();

或者单场比赛:

string value = "Test123Test";

string searchQuery = "Test%Test";

string regex = Regex.Escape(searchQuery).Replace("%", ".*?");

if ( Regex.IsMatch(value, regex) )
{
    // do something with the match...                
}

我们将 % 替换为正则表达式(. = 任意字符,* = 零次或多次,? = 惰性量词)。你可以了解更多关于正则表达式here

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-04-06
    • 1970-01-01
    • 2011-10-20
    • 2019-05-09
    • 2014-03-04
    • 2018-05-12
    • 2014-07-30
    相关资源
    最近更新 更多