比较c#中的两个字符串

时间:2016-04-13 08:46:42

标签: c#

我的问题是,我试图比较两个字符串,一个存在于文件中(比如说CS M 22+)而另一个存在于文件名中(比如说csm22+westbengal@v2)。我必须检查文件名中存在的字符串,即CS M 22+是否与文件名中的字符串匹配,即csm22+westbengal@v2

文件CS M 22+内的字符串称为目标名称,文件名中的字符串是后缀,市场名称为csm22 +,市场名称为westbengal @ v2。

下面是我实现的逻辑,我在比较两个字符串的char。但是,如果在测试时,我已将文件字符串内部更改为CS M 22,即如果我从内部文件字符串(CS M 22+)中删除任何内容,则该逻辑将失败。

如果两者都匹配,那么我正在编写文件名。

//For your reference 
//splittedTGMKTName  = csm22+westbengal@v2
//trimedTGMKTName    = csm22+
// and the below logic fails if i remove anything from the trimedTGMKTName like if
// i remove "+" and the logic works fine if i added anything to the trimedTGMKTName and then compare

foreach (var chr in splittedTGMKTName.ToCharArray())
{
    if (isContentLoopComplete)
    {
        if (lastChar == '-' || lastChar == '+' || chr == '-' || chr == '+')
        {
            isOldFile = true;
            break;
        }
    }

    for (int i = jpointer; i < trimedTGMKTName.ToCharArray().Length; )
    {
        if (trimedTGMKTName.Length - 1 == i)
        {
            isContentLoopComplete = true;
            lastChar = chr;
        }

        if (chr != trimedTGMKTName[i])
        {
            isbreak = true;
        }

        jpointer++;
        break;
    }

    if (isbreak)
        break;
}

if (!isOldFile)
{
    fileCount = ++fileCount;
    hasErrors = true;
    sw = new StreamWriter(folderPath + "/" + "Files_with_mismatch_TGMKT_Names_" + folder.Name + ".txt", true);
    sw.WriteLine(fileName);
    sw.Close();
}

任何帮助都会受到赞赏。谢谢。

1 个答案:

答案 0 :(得分:3)

如果你想检查你的功能是否在调用它的开头,你可以使用StartsWith功能: 例如:

library(dplyr)
library(tidyr)
bind_rows(add_rownames(dfA), add_rownames(dfB)) %>% 
          gather(Var, Val, -rowname) %>%
          group_by(rowname, Var) %>%
          filter(n_distinct(Val)>1) %>% 
          mutate(id = 1:2) %>% 
          spread(id, Val)
#  rowname     Var     1     2
#    (chr)   (chr) (chr) (chr)
#1    snp2 animal3    TT    TB
#2    snp4 animal2    CA    DF
#3    snp4 animal3    CA    DF

如果你想检查字符串是否包含另一个字符串,可以使用string src="csm22+westbengal@v2"; src.StartsWith("csm22")// will return true 函数。 对于Equality,您可以使用Contains