可以说我有 string1 = "DDD DXXXX" string2 = "DDXXXX" string3 = "DXXXX"
如何从字符串中提取子,如果字符串的长度是未知
,如果我想提取XXXX所有的时间,那么什么是在C的最佳方式? substr,strncpy,strndup都需要一个起始位置。
是正则表达式唯一的选择吗?
可以说我有 string1 = "DDD DXXXX" string2 = "DDXXXX" string3 = "DXXXX"
如何从字符串中提取子,如果字符串的长度是未知
,如果我想提取XXXX所有的时间,那么什么是在C的最佳方式? substr,strncpy,strndup都需要一个起始位置。
是正则表达式唯一的选择吗?
使用strstr()
查找字符串的一部分"XXXX"
:
char string1[] = "DDXXXX";
char* xxxx_ptr = strstr(string1, "XXXX");
if (xxxx_ptr)
{
/* Do something. */
}
如果您知道它始终位于最后并且长度固定,则可以通过计算字符串长度(strlen()
)并减去固定长度来计算其起始位置。
这是假设子永远是您检查
不,跟在目标子字符串后面的字符串长度是可变的。 – user1335161 2012-04-15 22:51:38
这意味着它必须符合您可以检查的模式。在这种情况下,正则表达式可能是一个很好的通用工具来解决这个问题 – Attila 2012-04-15 22:53:53
通过提取你的意思是从字符串中删除? – hmjd 2012-04-15 22:43:22