我知道这种问题并不常见,但如果有人能帮助我,我会很感激。 我试图解析包含电话号码的长字符串。共有3种数字,这里只是这3种情况的例子: 603333332222 00603333332222 03333332222
假设我们有这样的字符串: + 603333332222006033333322220333333222200603333332222 + 603333332222
现在我想要的是将这个长字符串分成与模式匹配的单个字符串,因此输出将为:
+ 603333332222,00603333332222,03333332222,00603333332222,+ 603333332222
如果难以回答或有很好的学习来源,请帮助我。
感谢
更新:
有3种常客:
并且长度始终如下:
答案 0 :(得分:2)
好吧,正如Rippr指出的那样,Regex可能不是最好的方式,但它可能仍然有用。你应该首先编写3个正则表达式(每个格式一个),然后将它们与OR结合 - 可能是这样的。
如果10位数字中有0或0060,您仍会感到恼火。
(0060|\+60|0)[0-9]{10}
但是,您可以使用if / else树解析字符串,如下所示:
If +60 at start of the remainings of the string then then
format is +60[10 digits number]
Store this phone number somewhere and processus the remainings char of the string
If 0060 at start of the remainings of the string then
format is 0060[10 digits number]
Store the number and continue proccessing
Else
Format is 0[10 digits number]
Store it and process the rest
或者使用前面带有^
的给定正则表达式解析字符串,然后从中删除每个第一个数字标识符并循环
答案 1 :(得分:1)
您可以使用SubString分隔以+开头的数字。至于其他2,这是不可能的......我的意思是,给定:
1234567890123456789012345
你怎么知道它是12345678901和23456789012345
或12345678901234和56789012345?