在visual c#中将字符串的字母与另一个字符串匹配

时间:2014-06-13 11:06:08

标签: c# string match

我正在使用visual c#编写一个匹配单词列表中单词的程序。我需要将字符串的字母与另一个字符串匹配,如果它满足,那么我将选择那些。

即: 第一个例子: 第一串:“LANE” 第二个字符串:“CLEAN”

第二个例子: 第一串:“AGED” 第二个字符串:“CAGED”

第3个例子: 第一串:“AGED” 第二个字符串:“RAGE”

第4个例子: 第一串:“取消” 第二个字符串:“CONCEAL”

对我来说,第一和第二个例子都应该是真实的。但第三个应该是假的。

到目前为止我能做的是我可以使用string.contains()方法返回第二个示例。请帮助我将第一个例子改为正确。

非常感谢提前。

我添加了另一个例子。第四个。请帮忙。

3 个答案:

答案 0 :(得分:1)

using System;
using System.Linq;


public class Program {
    public static void Main() {

        Console.WriteLine("LANE/CLEAN: {0}", Test("LANE", "CLEAN"));
        Console.WriteLine("AGED/CAGED: {0}", Test("AGED", "CAGED"));
        Console.WriteLine("AGED/RAGE: {0}", Test("AGED", "RAGE"));
        Console.WriteLine("CANCEL/CONCEAL: {0}", Test("CANCEL", "CONCEAL"));

    }

    public static bool Test(string s1, string s2) { 

        var sourceLetters = s1.ToCharArray().ToList();

        foreach (var letter in s2.ToCharArray())
            if (sourceLetters.Contains(letter))
                sourceLetters.Remove(letter);

        return !sourceLetters.Any();        

    }
}

// Results:
//
// LANE/CLEAN: True
// AGED/CAGED: True
// AGED/RAGE: False
// CANCEL/CONCEAL: True

答案 1 :(得分:1)

    public bool StringSimularity(string s1, string s2)
    {
       var res =  s1.Intersect(s2);
       if (res.Count().Equals(s2.Length) || res.Count().Equals(s1.Length))
           return true;
       else
           return false;
    }

答案 2 :(得分:0)

这样的东西?

    string word = "LANE";

    string[] wordList = { "CLEAN", "AGED", "CAGED", "RAGE" };

    foreach (string w in wordList)
    {
        Boolean x = true;
        foreach (char c in word)
        {
            if (!w.Contains(c))
            {
                x = false;
                break;
            }
        }
        if (x)
            Console.WriteLine(w);