Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 用任何可能的字符串c替换字符#_C#_String_Replace - Fatal编程技术网

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术语,而不是使用两个值这里
%
字符的作用是什么?它是某种通配符吗?是分隔符吗?还是文字“%”?