【发布时间】:2018-04-13 12:57:18
【问题描述】:
我尝试了不同的功能,包括strtok()、strcmp() 和strstr(),但我想我错过了一些东西。有没有办法匹配字符串中的确切子字符串?
例如:
如果我有名字:“Tan”
我有 2 个文件名:“SomethingTan5346”和“nothingTangyrs634”
那么我怎样才能确保我匹配第一个字符串而不是两者?因为第二个文件是给 Tangyrs 的。或者这种方法不可能?我是不是走错路了?
【问题讨论】:
-
“精确”子字符串是什么意思?两者都有子字符串。
-
您要做的第一件事是严格定义“名称”的含义。您似乎将两个示例文件名分解为单独的字符串。要完全匹配这些字符串,一种方法是将文件名分成您定义为其单独子字符串的内容,然后在子字符串上查找 complete 匹配项,例如
strcmp(). -
文件名的结构是什么? SOMETHINGTAN5346 是有效的文件名吗?应该在这里找到 TAN 吗?
-
正如其他人所说,首先确定文件名的约定是什么。难道你不能
p = strstr(str, "Tan")并且如果找到它,请检查p[strlen("Tan")]的下一个字符是否是数字? (当然,如果有名称为"Tan5"和"gTan"的用户,这将失败。) -
您似乎对自己的代码应该做什么有一个过于模糊的概念。在一个地方,您提到了一个“确切的子字符串”而没有定义它是什么。在其他地方,您提到了“为”“人”的“文件”,但没有定义这些词的含义。如果您认为这些事情是不言而喻的,请再想一想。
!@#$Tz:Gh012NV65$#是“文件”吗?它“为”什么“人”?为什么?
标签: c