有什么方法可以搜索“tro_ _ _e”,其中下划线代表缺失的字母?
我有一个文本文件,每行有 7 个字母的单词。例如
trouble
control
reached
further
helping
shatter
biggest
我正在尝试将每个单词与字符串进行比较
char check[10]="tro\0\0\0e"
目前我正在阅读每一行并使用以下内容进行比较:
if(strstr(pword,check)!=NULL)
{
fprintf(wfile,"%s\n",pword);
}
}
fclose(file);
fclose(wfile);
我意识到我当前在 wfile 中的输出:
control
trouble
是因为“tro”和“e”之间有三个\0,所以比较只是在单词中查找“tro”。
有什么方法可以搜索“tro_ _ _e”,其中下划线代表缺失的字母?
这是一个刽子手游戏,因此文件中的单词并不总是相同,并不总是 7 个字母长,并且模式并不总是“tro_ _ _e”,因为该模式代表玩家已经猜到的字母。本例的答案:“麻烦”
例如,如果玩家猜出了“r”、“u”和“l”。我会有一个字面上的字符串。
char check[10]="\0r\0u\0l\0\0\0\0\0"
因此我想要的搜索将是针对具有模式“_r_u_l”的任何单词”
最佳答案
如果您真正愿意接受 C# 解决方案,正如您的标签所建议的那样:
string pword = "control\r\ntrouble\r\nreached\r\nfurther\r\nhelping\r\nshatter\r\nbiggest";
System.Text.RegularExpressions.Regex re = new System.Text.RegularExpressions.Regex("tro...e");
System.Text.RegularExpressions.MatchCollection mc = re.Matches(pword);
foreach (System.Text.RegularExpressions.Match m in mc)
{
Console.WriteLine(m.Value);
}
关于c - 寻找单词中的字母模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9095414/