簡體   English   中英

如何使用特定范圍(電子郵件格式)在Java中過濾字符串

[英]How to filter a String in java with specific range (email format)

我在Java中有一個名為Kiran<kiran@gmail.com>的字符串。 我想通過刪除其他內容來獲取String只是kiran@gmail.com。

String s1= kiran<kiran@gmail.com>

輸出應為kiran@gmail.com

請幫我解決這個問題。

如果您嘗試解析電子郵件地址,建議您使用InternetAddress類。 它是Java EE的一部分(如果使用的是Java SE,則需要添加javax.mail依賴項)。

該類可以解析包含您的電子郵件地址的字符串。

String s1 = "kiran<kiran@gmail.com>";
InternetAddress address = new InternetAddress(s1);
String email = address.getAddress();

我認為這樣:

  • 您的算法自動符合標准
  • 您的代碼比使用正則表達式提取電子郵件地址更干凈。

您可以執行以下操作。

String s = "To: John Smith <john@smith.com>, Janes Smith\n"
            + "<jane@smith.org>, Tom Barter <tom@test.co.uk>, Other \n"
            + "Weird @#$@<>#^Names <other@names.me>, \n"
            + "Long Long Long Long Name <longlong@name.com>";
    s = s.substring(3); // filter TO:
    System.out.println(s);
    // Use DOTALL pattern  
    Pattern p = Pattern.compile("(.*?)<([^>]+)>\\s*,?",Pattern.DOTALL);

    Matcher m = p.matcher(s);

    while(m.find()) {
        // filter newline
        String name = m.group(1).replaceAll("[\\n\\r]+", ""); 
        String email = m.group(2).replaceAll("[\\n\\r]+", "");
        System.out.println(name + " -> " + email);
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM