我的问题是,我试图比较两个字符串,一个存在于文件中(比如说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();
}
任何帮助都会受到赞赏。谢谢。
答案 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
。