如何在一个字符串中找出一个电话号码 java String 问题 ,请用最简单的方法

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在一个字符串中找出一个电话号码 java String 问题 ,请用最简单的方法相关的知识,希望对你有一定的参考价值。

String str="123456sajgj10086kk10000";
str=str.replaceAll("^[0-9]+",";");
String str2[]=str.split(";");

则str2[0]="123456",str2[1]="10086",str2[2]="10000"
这样凡是成串的数字都分离出来放到数组中
你可以再进行长度或格式匹配进行筛选
参考技术A 电话号码应该有固定的位数吧!
你没有说清楚电话号码的格式是什么样子的,是像“0000-00000000”?还是什么?
如果使用String类来解决这种问题,你可以从头遍历,当遍历到一个数字后,检查它之后的几位是否是固定格式就可以了!
参考技术B 不懂你说的意思? 参考技术C 可以用正则表达式 参考技术D 哥们,在具体点,不要问这么模棱两可的问题

如何找出字符串是不是包含在 std::vector 的任何字符串中?

【中文标题】如何找出字符串是不是包含在 std::vector 的任何字符串中?【英文标题】:How to find out if a string is contained in any string of a std::vector?如何找出字符串是否包含在 std::vector 的任何字符串中? 【发布时间】:2018-03-08 20:37:54 【问题描述】:

有一个主机名向量,我想从另一个向量中提取任何包含任何字符串的主机名。

假设我有一个包含主机名和 IP 地址的二维向量:

std::vector<std::vector<string>> hostnames = "Mike-computer","1.2.3.4", 
                                         "John-computer","5.6.7.8", 
                                         "Monica-computer","9.10.11.12";

还有另一个包含目标主机名的向量:

std::vector<string> targets = "Mike", "Sophia";

如果hostnames 向量中的任何行包含"Mike""Sophia",则提取其信息。在此示例中,"Mike-Computer" 将被删除,因为它包含来自我的 targets 向量的 "Mike"

我在this thread 上发现我可以在我的targets 向量上使用std::find,但如果它不完全匹配,它将无法工作。只有当我特别说 "Mike-computer" 但我不知道我查询的计算机的完整主机名时,它才会起作用。

这是一段代码:

for (std::vector<std::vector<std::string>>::iterator row = hostnames.begin(); row != hostnames.end(); ++row)

    for (std::vector<std::string>::iterator col = row->begin(); col != row->end(); ++col)
    
        if ((std::find(targetsList.begin(), targetsList.end(), *col) != targetsList.end()))
        
            std::cout << *col << " is a match" << std::endl;
        
    

【问题讨论】:

如果要使用&lt;algorithm&gt;,搜索子序列的正确算法是std::search,而不是std::find 它是在索引 0 还是其他任何地方都重要吗? 【参考方案1】:

std::string 有一个find 成员函数,它会查找一个字符串是否存在于另一个字符串中。您可以使用它来查看主机名是否包含目标名称,例如

for (const auto& host : hostnames)

    for (const auto& target : tagets)
    
        if (host[0].find(target) != std::string::npos)
            std::cout << "Found: " << host[0] << " with IP: " << host[1];
    

我还想建议,如果您总是只有一个主机名和 IP 对,您可以使用一个实际的数据结构,例如

struct Computer

    std::string name;
    std::string IP;
;

这样

if (host[0].find(target) != std::string::npos)
    std::cout << "Found: " << host[0] << " with IP: " << host[1];

看起来像

if (host.name.find(target) != std::string::npos)
    std::cout << "Found: " << host.name << " with IP: " << host.IP;

或者至少使用std::pair&lt;std::string, std::string&gt;,这样代码中就没有“幻数”。

【讨论】:

我对两种方式都进行了测试,它们找到了正确数量的主机

以上是关于如何在一个字符串中找出一个电话号码 java String 问题 ,请用最简单的方法的主要内容,如果未能解决你的问题,请参考以下文章

java中如何提取一个字符串中的电话号码?

用java编写一个字符串的程序,找出连续出现三次的字符

在Java中,如何使用javascript判断一个字符串是不是类似于电话号码?

Excel 如何从A类的身份证号码里找出与B类重复的身份证号

单击phonegap中的号码时如何拨打号码?

如何获取Java中一个String字符串中的某一个字符的“索引值”?