我希望能够像在sql中使用like运算符一样使用contains函数。因此,当我从列表中调用.contains(%This %%%%%%是%% my%string %%)或其他诸如"这是我的字符串"然后该函数将返回true。我做了很多搜索,似乎很多人都喜欢这个功能。那么如何做到这一点,或者如何制作具有相同功能的自定义功能呢?
EDIT 谢谢你的快速反应。我能够在我自己的自定义Like函数中使用正则表达式。下面是其他任何想要使用类似于SQL Like的人的代码。在此代码中,用户将输入数据库值,然后将该值中的空格替换为。*以忽略值之间的任何内容。就像使用%来替换SQL中的空格和值一样。然后我可以使用.Like我的字符串值testValue,我正在搜索返回true或false,具体取决于我的字符串中是否包含单词或其他内容。我还添加了ToUpper以忽略这种情况。 // C#Like函数
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
namespace sqllinqstuff
{
class Program
{
static void Main(string[] args)
{
string testValue = "Big RED Car";
string databaze = "big red CAR";
string databaze3 = databaze.Replace(" ", ".*");
databaze3 = databaze3.Replace(" ", ".*");
Console.WriteLine(databaze3);
Console.WriteLine(testValue.Like(databaze3));
Console.Read();
}
}
public static class CaseyStringExtension
{
public static bool Like(this string str,string value)
{
if (!string.IsNullOrEmpty(str))
{
Regex r = new Regex(value.ToUpper());
if (r.IsMatch(str.ToUpper()))
return true;
}
return false;
}
}
}
此测试的结果将是真实的。
答案 0 :(得分:3)
这样做的方法是使用Regex。语法与SQL LIKE查询不同,因此会有一些学习曲线。 This is a good tutorial site我经常提到,它可以让你从基础开始。
翻译您询问的原始字符串,正则表达式搜索模式将是
.*This.*is.*my.*string.*
一旦你擅长这一点,就可以进行像I helped create for a password complexity checker
这样的搜索(?=^.{8,}$)(?=.*[a-z])(?=.*[A-Z])(?=.*[\W_])(?=^.*[^\s].*$).*$
上述搜索查找的字符串至少包含8个字符,且至少包含一个小写字母,一个大写字母,一个特殊字符和无空白字符。