【问题标题】:Comparing a part of a string. C#比较字符串的一部分。 C#
【发布时间】:2014-11-28 15:22:47
【问题描述】:

我想比较并检查一个字符串是否是另一个字符串的一部分。例如: 字符串 1 = "ACGTAAG" String2 = "TAA"

我想检查 String1 是否包含 String2。我正在使用此代码,但它不起作用。

public bool ContainsSequence(string input, string toBeChecked)
    {
        for (int i = 0; i < input.Length; i++)
        {
            Char x = input[i];
            String y = Convert.ToString(x);

            for (int j = 0; j < toBeChecked.Length; j++)
            {
                Char a = toBeChecked[j];
                String b = Convert.ToString(a);
                if (b.Equals(y))
                {
                    j = toBeChecked.Length;
                    return true;
                }
            }

        }

        return false;
    }

input = string1 和 tobechecked = string 2。 我是 c# 的新手,所以有些术语可能会令人困惑。

【问题讨论】:

  • 为什么不使用 .contains? input.contains(toBeChecked).
  • c# 在字符串对象上有一个方法:contains
  • 至于为什么这段代码不起作用:如果找到一个匹配字符,您只返回true,您从不检查是否找到整个字符串ToBeChecked(因为你在发现之前就回来了;D)
  • 是的,我会使用那个方法。谢谢:)

标签: c# arrays string for-loop compare


【解决方案1】:

尝试使用 String.Contains()

在这里查看:

http://msdn.microsoft.com/en-us/library/dy85x1sa%28v=vs.110%29.aspx

祝你好运。

【讨论】:

  • 哇。这是一个非常简单的答案。我从来不知道有一种方法可以做到这一点。谢谢!
【解决方案2】:

使用

If(mainString.Contains(searchedString)
{
   //do stuff
}

【讨论】:

    【解决方案3】:

    在我看来,您正在使用它来比较 DNA 序列 :)。

    也许 string.IndexOf(string value) 或其中一个重载对您更有利,因为它可以提供帮助 您搜索相同字符串的进一步出现(诸如“它包含多少次字符串”之类的东西):http://msdn.microsoft.com/en-us/library/k8b1470s(v=vs.110).aspx

    如果您确实只想查看是否包含字符串,我也会选择其他人提供的版本。

    【讨论】:

      【解决方案4】:

      对于核苷酸序列,您可能需要一些sequence alignment algorithm,它在序列不相等时具有一定的容忍度。例如Smith–Waterman algorithm

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2023-02-14
        • 2011-01-10
        • 2023-01-09
        • 2018-09-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多