【问题标题】:Unable to get String.split() to work as expected on android无法让 String.split() 在 android 上按预期工作
【发布时间】:2011-07-16 02:54:19
【问题描述】:

我想在 java (android) 中拆分电子邮件字符串,但它无法正常工作。

Input: "ihnel48@gmail.com"
String[] pattens = email.split("@.");
Expected: "ihnel48", "gmail", "com"
Output: "ihnel48" "mail.com"

【问题讨论】:

  • 当然可以。你只是没有正确使用它。
  • 问题与android无关。
  • 好的,我明白了。使用正则表达式会更好。

标签: java android string split


【解决方案1】:

因为String.split 匹配基于regular expression@. 意味着它会连续查找两个 字符(而不是一次两个 字符)。而且,正则表达式中的. 是一个特殊字符,意思是“任何东西”:

@. = "@ and then any character"

在您的情况下,这匹配“@g”并且点。

相反,你想要:

String[] pattens = email.split("[@.]");

方括号[] 创建一个字符类,它表示单个位置可以匹配的所有有效字符。因此,您需要匹配“@”或“.”。字符. 不需要在字符类中转义。

【讨论】:

  • 很好!!你真的治愈了我 20 分钟的头痛!谢谢老兄
【解决方案2】:

你必须逃避这个时期(.)。否则它是一个通配符,将匹配任何单个字符。逃避它的方法是使用反斜杠。在 Java 的文字字符串中,反斜杠也是转义字符,因此您必须使用两个反斜杠。此外,您需要某种“或”运算符,告诉它在遇到.@ 时进行拆分。有两种方法可以做到这一点。

这是一个:

String[] pattens = email.split("@|\\.");

这是另一个:

String[] pattens = email.split("[@\\.]");

【讨论】:

    【解决方案3】:

    . 匹配g,即g 也被删除

    【讨论】:

      【解决方案4】:

      在我看来它工作得很好。您给了它一个正则表达式,表示要查找字符“@”后跟任何字符(这就是“.”在正则表达式中的含义)。这就是它发现并分裂的原因。

      我不是正则表达式专家,但我认为可能是“@|\”。会按照你的意图去做。

      【讨论】:

      • 那么如何在正则表达式中查找句点?
      • 您需要使用反斜杠来转义 .喜欢\.。看我的回答
      【解决方案5】:

      试试:

      String[] pattens = email.split("@");
      

      【讨论】:

        【解决方案6】:

        您想在 @ 或 上拆分。我相信。

        正确的正则表达式是:"@|\."

        编辑:原来用括号代替引号

        【讨论】:

          【解决方案7】:

          有趣的解决方案:

               //Replace all "." to "@", and split
               String split(String input){
                  String[] patterns = input.replaceAll("\\.", "@").split("@");
                  return Arrays.toString(patterns);
              }
          

          【讨论】:

            【解决方案8】:

            试试这个代码

             StringTokenizer tokens = new StringTokenizer(CurrentString, "@");
             String first = tokens.nextToken();
             String second = tokens.nextToken();
            

            【讨论】:

              猜你喜欢
              • 2023-04-07
              • 1970-01-01
              • 2013-08-15
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多