如果我有一个字符串,并且我想查找它是否包含XXX-XX-XXX形式的数字,并返回其在字符串中的位置,是否有一种简单的方法可以做到这一点?
XXX-XX-XXX可以是任何数字,例如259-40-092。
答案 0 :(得分:4)
这通常是正则表达式的工作。例如,查看Boost.Regex库。
答案 1 :(得分:0)
我之前做过......
正则表达是你的超级英雄,成为他的朋友......
//Javascript
var numRegExp = /^[+]?([0-9- ]+){10,}$/;
if (numRegExp.test("259-40-092")) {
alert("True - Number found....");
else
alert("False - Not a Number");
}
为了给你一个字符串中的位置,这将是你的功课。 :-) C ++中的正则表达式将是......
char* regExp = "[+]?([0-9- ]+){10,}";
对此实例使用Boost.Regex。
答案 2 :(得分:0)
如果你不想要正则表达式,这是一个算法:
Find the first -
LOOP {
Find the next -
If not found, break.
Check if the distance is 2
Check if the 8 characters surrounding the two minuses are digits
If so, found the number.
}
不是最佳但是扫描速度已经由缓存/内存速度控制。可以通过考虑匹配失败的部分以及如何进行优化。例如,如果您有“123-4X-X ............”,当您找到X时,您知道可以快速跳过。第二个 - 在X之前不能是第一个 - 正确的数字。同样地,在“123--”中你知道第二个 - 也不可能是第一个 - 也就是数字。