【问题标题】:How to get multi sub strings from String, Android/Java如何从 String、Android/Java 中获取多个子字符串
【发布时间】:2016-05-06 19:17:24
【问题描述】:

我知道对此有类似的问题。但是,我尝试了很多解决方案,但它对我不起作用。

我需要帮助从一个字符串中提取多个子字符串:

String content = "Ben Conan General Manager 90010021 benconan@gmail.com";

注意:String中的内容不一定都是这种格式,可能都是乱码。

我想提取电话号码和电子邮件,如下所示:

1. 90010021

2。 benconan@gmail.com

在我的项目中,我试图获得此结果,然后将其显示到 2 个不同的 EditText 中。 我尝试过使用模式和匹配器类,但它不起作用。

如果需要,我可以在这里提供我的代码,请帮助我~

--------编辑----------

以下是我目前只取出邮箱地址的方法:

private static final String EMAIL_PATTERN =
            "[a-zA-Z0-9\\+\\.\\_\\%\\-\\+]{1,256}" +
                        "\\@" +
                        "[a-zA-Z0-9][a-zA-Z0-9\\-]{0,64}" +
                        "(" +
                            "\\." +
                            "[a-zA-Z0-9][a-zA-Z0-9\\-]{0,25}" +
                        ")+";



public String EmailValidator(String email) {

        Pattern pattern = Pattern.compile(EMAIL_PATTERN);
        Matcher matcher = pattern.matcher(email);

        if (matcher.find()) {

            return email.substring(matcher.start(), matcher.end());

        } else {

            // TODO handle condition when input doesn't have an email address

        }

        return email;
    }

【问题讨论】:

  • 用逗号分割字符串
  • @Vivek Mishra 嗨,文本不必有逗号。我只是把它放在那里以便于查看。我有一个用于电子邮件和电话的正则表达式公式,但它不起作用:) 现在将删除逗号
  • 然后用空格隔开
  • String s = 本柯南总经理.split(""));字符串 s1 = 90010021.split(""));字符串 s2 = benconan@gmail.com.split(""));现在使用你的 s1 & s2
  • @AmarbirSingh 你看到你发布的内容了吗?

标签: java android regex string


【解决方案1】:

试试这个正则表达式的电话号码

[\d+]{8}  ---> 8 represents number of digits in phone number

你可以使用

[\d+]{8,} ---> if you want the number of more than 8 digits

使用适当的 JAVA 函数进行匹配。你可以在这里试试结果 http://regexr.com/

对于电子邮件,取决于格式是简单还是复杂。这里有很好的解释

http://www.regular-expressions.info/index.html

【讨论】:

    【解决方案2】:

    String.split(...) 是一个 java 方法。

    示例:

    String content = "Ben Conan, General Manager, 90010021, benconan@gmail.com";
    String[] selection = content.split(",");
    System.out.println(selection[0]);
    System.out.println(selection[3]);
    

    但是如果你想做一个正则表达式然后看看这个:

    https://stackoverflow.com/a/16053961/982161

    【讨论】:

    • 您好,正文不用逗号。我只是把它放在那里以便于查看。对困惑感到抱歉。我有电子邮件和电话的正则表达式公式,但它不起作用:(
    • 嗯...放置正确的字符串,以便我可以提出一些可行的建议,
    • 嗨,很抱歉给您带来了困惑,我已经更新了我的答案:)
    • @MattDonalds,好的 tnxs,请看看我的更新答案
    【解决方案3】:

    也许你应该这样做而不是你的:

    String[] Stringnames = new String[5]
    
    Stringnames [0] = "your phonenumber"
    Stringnames[1] = "your email"
    
    System.out.println(stringnames)
    

    或者:

    String[] Stringnames = new String[2]
    String[] Stringnames = {"yournumber","your phonenumber"};
    

    System.out.println(stringnames [1]);

    【讨论】:

      【解决方案4】:

      你可以像这样将你的字符串分成数组列表

          String str = "Ben Conan, General Manager, 90010021, benconan@gmail.com";
      List<String> List = Arrays.asList(str.split(" "));
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-03-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多