如何检查字符串是否包含字母空格字母空格和另一个字母C#

时间:2014-03-26 13:02:22

标签: c# game-engine

我需要帮助来检查一个字符串是否包含如下字:P I E T S N O T。 C O M

当我这样说时,我不希望它说出来:“嗨,我的名字是”等等, 只有当它是1个字母的空格1个字母且字符串的3个或更多时。这是我的游戏的banfilter。 我不希望那个人可以说你来我的游戏H I H I H I。 C O M

我无法理解,因为我不想为1个单词添加所有组合。

5 个答案:

答案 0 :(得分:1)

严格遵循您的要求,所有不是字母的内容后跟空格并重复序列直到字符串结尾

void Main()
{
    string test = "P I E T S N O T . C O M";
    Console.WriteLine(CheckSpaceLetterSequence(test));
    test = "Hi my name is";
    Console.WriteLine(CheckSpaceLetterSequence(test));
}


bool CheckSpaceLetterSequence(string test)
{
    int count = 0;
    bool isSpace = (test[0] == ' ');
    for(int x = 1; x < test.ToCharArray().Length; x++)
    {
        bool curSpace = (test[x] == ' ');
        if(curSpace == isSpace)
            return false;

        isSpace = !isSpace;
        count++;
        if(count == 3)
           break;
    }
    return true;
}

答案 1 :(得分:1)

这应该可以解决问题:

bool allLetterSpace = text.Trim().Length >= 6 && text.Trim()
   .Select((c, i) => new { IsWhiteSpace= Char.IsWhiteSpace(c), Index = i })
   .All(x => x.Index % 2 == 1 ? x.IsWhiteSpace : !x.IsWhiteSpace);

答案 2 :(得分:0)

string word = "Hello, my name is f i s h b i s c u i t s";

if (word.Replace(" ", "").Contains("fishbiscuits"))
{
 // code here
}

答案 3 :(得分:0)

这将告诉您text中的每个其他字符是否为空格:

bool spaced = text.Select((c,i) => (c == ' ') == (i % 2 == 1)).All(b => b);

答案 4 :(得分:0)

正则表达式解决方案可能如下所示:

Regex regex = new Regex(@"(?<name>(?:[A-Z.] ){2,}[A-Z.])");
Match m = regex.Match("P I E T S N O T . C O M");
if (m.Success)
    MessageDlg.Show("Name is " + m.Groups["name"].Value);
else
    MessageDlg.Show("No name found");

如果你需要它来匹配更多的字母而不是大写字母和点,你应该将两个[A-Z。]扩展到例如[A-ZA-Z0-9。,-_]。