如何将单词与C#&x27完全匹配;s包含函数?

如何将单词与C#&x27完全匹配;s包含函数?,c#,contains,C#,Contains,我试图通过C#读出脚本,并确定它们是否包含某些单词,但这些单词应该与相同,而不是只包含我要查找的内容。有没有办法使用contains-函数,挑出单词,并检查它是否与确切的单词相同 如何确定它是否同时包含搜索词并与搜索词相同 目前我正在使用以下脚本: // GetScriptAssetsOfType<MonoBehaviour>() Returns all monobehaviour scripts as text foreach (MonoScript m in GetScriptA

我试图通过C#读出脚本,并确定它们是否包含某些单词,但这些单词应该与相同,而不是只包含我要查找的内容。有没有办法使用
contains
-函数,挑出单词,并检查它是否与确切的单词相同

如何确定它是否同时包含搜索词并与搜索词相同

目前我正在使用以下脚本:

// GetScriptAssetsOfType<MonoBehaviour>() Returns all monobehaviour scripts as text
foreach (MonoScript m in GetScriptAssetsOfType<MonoBehaviour>())
{
    if (m.text.Contains("Material"))
    {
       // Identical check?
    }
}
//GetScriptAssetsOfType()以文本形式返回所有单行为脚本
foreach(GetScriptAssetsOfType()中的MonoScript m)
{
如果(m.text.包含(“材料”))
{
//一模一样的支票?
}
}
正则表达式怎么样

bool contains = Regex.IsMatch(m.text, @"\bMaterial\b");

Contains将搜索作为参数的确切单词 在一个小程序中检查这个示例

string a = "This is a test";
string b = "This is a TEST";
Console.WriteLine(a.Contains("test"));
Console.WriteLine(b.Contains("test"));

希望我能很好地理解你的问题

再检查一下。我希望我理解你的问题

// GetScriptAssetsOfType<MonoBehaviour>() Returns all monobehaviour scripts as text
foreach (MonoScript m in GetScriptAssetsOfType<MonoBehaviour>())
{
    if (m.text.Contains("Material"))
    {
        if(m.text == "Material")
        {
             //Do Something
        }
    }
}
string a = "This is a test for you";
string b = "This is a testForYou";
string c = "test This is a for you";
string d = "for you is this test.";
string e = "for you is this test, and works?";

var regexp = new Regex(@"(\stest[\s,\.])|(^test[\s,\.])");


Console.WriteLine(regexp.Match(a).Success);
Console.WriteLine(regexp.Match(b).Success);
Console.WriteLine(regexp.Match(c).Success);
Console.WriteLine(regexp.Match(d).Success);
Console.WriteLine(regexp.Match(e).Success);
//GetScriptAssetsOfType()以文本形式返回所有单行为脚本
foreach(GetScriptAssetsOfType()中的MonoScript m)
{
如果(m.text.包含(“材料”))
{
如果(m.text==“材料”)
{
//做点什么
}
}
}

只需使用扩展方法就可以方便地使用正则表达式

扩展类

using System.Text;
using System.Text.RegularExpressions;
namespace ConsoleApplication11
        {
            public static class Extension
            {
                public static Match RegexMatch(this string input, string pattern, RegexOptions regexOptions = RegexOptions.IgnoreCase)
                {
                    return Regex.Match(input, pattern, regexOptions);
                }
            }
        }
并使用上述类

        using System.Text;
        namespace ConsoleApplication11
        {
            class Program
            {
                static void Main(string[] args)
                {
                    bool isMatch = "this is text ".RegexMatch(@"\bis\b").Success;
                }
            }
        }

如果不熟悉,请参阅扩展方法。因此,您正在寻找regexp而不是Contains,现在我了解了您的问题

string a = "This is a test for you";
string b = "This is a testForYou";
string c = "test This is a for you";
string d = "for you is this test.";
string e = "for you is this test, and works?";

var regexp = new Regex(@"(\stest[\s,\.])|(^test[\s,\.])");


Console.WriteLine(regexp.Match(a).Success);
Console.WriteLine(regexp.Match(b).Success);
Console.WriteLine(regexp.Match(c).Success);
Console.WriteLine(regexp.Match(d).Success);
Console.WriteLine(regexp.Match(e).Success);

如果您不想使用equal运算符,可以欺骗它并说m.text.Contains(“Material”)&&m.text.Length==8@Miche但是m.text的长度总是比8长。当我试图在一个巨大的文本文档中挑出这个词时,也就是一个脚本。是的,在你的测试中,这可能会起作用。但是,如果脚本包含单词colorMaterial,它仍然会找到该材质。让它不再精确,那是行不通的。m、 文本有时=1200行长。我只想检查被包含过滤的单个单词是否等于其他答案所说的使用正则表达式。如果不想使用正则表达式,另一个解决方案是拆分单词,然后在循环中检查它。你不需要,嗯,没有想到正则表达式。我想我会试一试。我不是一个专业的正则表达式,我很肯定你可以改进这个