C# 用任何可能的字符串c替换字符#
假设我有这样的字符串C# 用任何可能的字符串c替换字符#,c#,string,replace,C#,String,Replace,假设我有这样的字符串Test%Test,我存储了这样的字符串: Test123Test 测试 test153jhdtest 123测试 TEST123 所以我想要的是,当我在文本框中键入Test时,它会自己用Test过滤我所有的内容,这会让我得到所有的字符串,这很简单,但我想键入Test%Test,它需要过滤我所有本身有Test[任何]Test的内容(所以结果将是第一个、第二个和第三个字符串)。我如何才能做到这一点?使用正则表达式的简单解决方案是: string[] values = new s
Test%Test
,我存储了这样的字符串:
Test123Test
测试
test153jhdtest
123测试
TEST123
所以我想要的是,当我在文本框中键入
Test
时,它会自己用Test
过滤我所有的内容,这会让我得到所有的字符串,这很简单,但我想键入Test%Test
,它需要过滤我所有本身有Test[任何]Test
的内容(所以结果将是第一个、第二个和第三个字符串)。我如何才能做到这一点?使用正则表达式的简单解决方案是:
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...
}
我们将%替换为正则表达式(.=任何字符,*=零次或多次,=惰性量词)。您可以了解有关正则表达式的更多信息。使用正则表达式的简单解决方案是:
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...
}
我们将%替换为正则表达式(.=任何字符,*=零次或多次,,=惰性量词)。您可以了解有关正则表达式的更多信息。链接可以帮助您。可能有一个很好的正则表达式。但我绝对不是正则表达式专家。因此,我将使用String.StartsWith和String.EndsWith解决它。因此,在“%”上插入搜索项,而不是使用两个值。
%
字符在这里的作用是什么?它是某种wi吗ldcard?分隔符?还是文字“%”?link可以帮助你。可能有一个很好的正则表达式。但我绝对不是正则表达式专家。所以我会用String.StartsWith和String.EndsWith来解决它。所以在“%”上插入seach术语,而不是使用两个值这里%
字符的作用是什么?它是某种通配符吗?是分隔符吗?还是文字“%”?