【问题标题】:split string by period and quotation marks in java在java中按句点和引号分割字符串
【发布时间】:2025-11-29 12:10:02
【问题描述】:

一个非常愚蠢的问题,我知道 " 和 . 都是特殊字符,但是为什么使用 split() 函数时会有所不同?

这里是代码

    String.split("\"");
    String.split("\\.");

它们都有效,但为什么第一行代码只有一个“\”,第二行有两个?

编辑: 如果我这样做会发生什么

    String.split("\\"");

结果会不会一样

    String.split("\"");

【问题讨论】:

  • 我知道 " 和 . 都是特殊字符 :不,至少不在同一个上下文中。" 在 Java 的字符串字面语法中很特殊,但没什么特别的在正则表达式中。. 在正则表达式方面是特殊的,但在 Java 的字符串字面量语法中没有。只需打印出这两个字符串,您就会明白这是什么意思
  • 简单:第一行参数长度为1(唯一字符为"),第二行参数长度为2(第一个字符为\,第二个字符为句点). 正则表达式匹配器需要 \ 在字符串中,以便它不会将句点视为特殊。

标签: java string split


【解决方案1】:

在第一个示例中,您正在转义 "(这不是特殊的正则表达式字符,因此它与 string.split(Character.toString('"')); 字面上相同) - 也就是说,您需要转义 " 以放入 @ 987654324@ 在String - 你也可以写string.split("" + '"');。在第二个示例中,您正在转义 .(这是一个特殊的正则表达式字符)。因此\ 被转义,相当于Pattern.compile(".", Pattern.LITERAL).split(string);

【讨论】:

    【解决方案2】:

    当你在 Java 中使用 split 函数时,你还应该注意一些符号不仅仅意味着简单的字符,它还可能意味着正则表达式的特殊命令。

    For string    For regex
       "\""           "      <- noting special from regex point of view, will process all (")
       "."            .      <- Yeh, special character, I will process all characters
       "\\."          \.     <- noting special from regex point of view, will process all (.)
    

    【讨论】:

      【解决方案3】:

      已经在这里回复The split() method in Java does not work on a dot (.)

      java.lang.String.split 拆分正则表达式,而正则表达式中的. 表示“任何字符”。

      【讨论】: