通过这种方式,它返回了一些错误,似乎主要的例子是2个字符的字符,例如“++”被“#++#”取代,而接近将All()替换为“## + ## + ##”。
return lexeme.replaceAll(
"==", "#==#"
).replaceAll(
"&&", "#&&#"
).replaceAll(
"=", "#=#"
).replaceAll(
">", "#>#"
).replaceAll(
"++", "#++#"
).replaceAll(
"<=", "#<=#"
).replaceAll(
"!", "#!#"
).replaceAll(
"-", "#-#"
).replaceAll(
"--", "#--#"
).replaceAll(
"+", "#+#"
).replaceAll(
"+=", "#+=#"
).replaceAll(
"*", "#*#"
).replaceAll(
",", "#,#"
).replaceAll(
".", "#.#"
).replaceAll(
"[", "#[#"
).replaceAll(
"{", "#{#"
).replaceAll(
"(", "#(#"
).replaceAll(
")", "#)#"
).replaceAll(
"}", "#}#"
).replaceAll(
"]", "#]#"
).split( "#");
}
答案 0 :(得分:1)
主要的正确性问题可能是您在之前的替换结果上调用replaceAll()
,因此例如==
首先被#==#
替换为==
目标为##=##=##
,然后定位到=
,原因是替换定位+=
。
此外,您的方法无法确保选择最长的匹配目标/针,因此+#=#
会被#+##=#
替换为+=
,然后再到if (data instanceof File) {}
,直到达到{{1}目标。