0

这样,它返回了一些错误,似乎主要示例是2个字符的字符,例如“++”被“# ++ #”替换,同时接近替换All()“to”## + ## + ## "。

return lexeme.replaceAll(
        "==", "#==#"
    ).replaceAll(
        "&&", "#&&#"
    ).replaceAll(
        "=", "#=#"
    ).replaceAll(
        ">", "#>#"
    ).replaceAll(
        "++", "#++#"
    ).replaceAll(
        "<=", "#<=#"
    ).replaceAll(
        "!", "#!#"
    ).replaceAll(
        "-", "#-#"
    ).replaceAll(
        "--", "#--#"
    ).replaceAll(
        "+", "#+#"
    ).replaceAll(
        "+=", "#+=#"
    ).replaceAll(
        "*", "#*#"
    ).replaceAll(
        ",", "#,#"
    ).replaceAll(
        ".", "#.#"
    ).replaceAll(
        "[", "#[#"
    ).replaceAll(
        "{", "#{#"
    ).replaceAll(
        "(", "#(#"
    ).replaceAll(
        ")", "#)#"
    ).replaceAll(
        "}", "#}#"
    ).replaceAll(
        "]", "#]#"
    ).split( "#");
}
4

1 回答 1

1

主要的正确性问题可能是您正在调用replaceAll()先前替换的结果,因此例如由于目标规则而==首先被替换,然后由于目标替换而被替换。#==#==##=##=##=

此外,您的方法不能确保选择最长的匹配目标/针,因此在到达目标之前+=被替换为+#=#然后再替换。#+##=#+=

于 2018-04-12T06:37:36.643 回答