拆分包含在字符串内的特殊字符

时间:2018-04-08 03:36:12

标签: java

我有一个字符串"""JBL@gmail.com,我想从中删除位于电子邮件地址前面的"""。我尝试使用split,但遗憾的是它没有用。

这是我的代码:

     String [] sender1 = SA1.split(" ");
     String str1 = sender1[0];
     System.out.println("the str1 is :"+str1);
     String [] sender2 = str1.split("\\\"");

     String str2 = sender2[0];
     String str3 = sender2[1];

     System.out.println("the str2 is :"+str2);
     System.out.println("the str3 is :"+str3);



这是我的代码输出 -

the str1 is :"""JBL@gmail.com""
the str2 is :
the str3 is :



我的SA1将包含"""JBL@gmail.com"" <JBL@gmail.com>"。电子邮件地址可以是大小写字母,数字等的混合。

4 个答案:

答案 0 :(得分:1)

您可以通过删除所有引号(replace("\"", "")),按空格(split(" "))拆分,并获取拆分中的第一个元素来获取字符串第一部分中的电子邮件({{ 1}}):

[0]

请注意,第二个元素会产生String str = "\"\"\"JBL@gmail.com\"\" <JBL@gmail.com>\""; str.replace("\"", "").split(" ")[0];

答案 1 :(得分:1)

如果 SA1 确实包含

"\"\"\"JBL@gmail.com\"\" <JBL@gmail.com>\""

然后您可以使用Pattern/Matcher Regular Expression "<(.*?)>"来从字符串中检索电子邮件地址:

String sa1 = "\"\"\"JBL@gmail.com\"\" <JBL@gmail.com>\"";
String email = "";

Pattern pattern = Pattern.compile("<(.*?)>");
Matcher matcher = pattern.matcher(sa1);
while (matcher.find()) {
    // Is a match found? 
    if (!matcher.group(1).equals("")) { 
        // There is so place the match into the 
        // email variable.
        email = matcher.group(1); 
    }
}
// Display the E-Mail Address in Console Window.
System.out.println("E-Mail Address is:  " + email);

将显示控制台窗口:

E-Mail Address is:  JBL@gmail.com

正则表达式说明:

enter image description here

答案 2 :(得分:0)

"fdsd\"\"\" dsd".split("\"\"\"")

你必须使用

"yourWords".split("\"\"\"")

答案 3 :(得分:0)

String  s= "\"\"\"JBL@gmail.com\"\" <JBL@gmail.com>\"".
                split("<")[1].replace(">", "").replace("\"", "");