我想用两个反斜杠+换行符“\\ \r\n”替换所有“\r\n”,除了“$$ $$”或“$ $”或“\[\]”中的“\r\n” ”。(这是乳胶语法)
以下文字
1.$$ Test
2.
3.$$ $
4. $
5. Test $
6.
7. $
8.
9. Test
应该
1.$$ Test
2.
3.$$ $
4. $ \\
5. Test $
6.
7. $ \\
8. \\
9. Test
我的一个试验:首先我用 --newline-- 替换了 $$ $$ 或 $ $ 或 \[ \] 之间的新行然后我用双新行替换了所有新行(在乳胶中 \ 等于双新行) . 然后我用新行替换了--newline--。
private static String replaceNewLines(String original) {
String text = original;
text = replaceBetween(text, "\\[", "\\]");
text = replaceBetween(text, "$$", "$$");
text = replaceBetween(text, "$", "$");
text = text.replace("\r\n", "\r\n\r\n").replace("--newline--", "\r\n");
return text;
}
private static String replaceBetween(String text, String start, String end) {
int i = text.indexOf(start);
while (i >= 0) {
int j = text.indexOf(end, i + 1);
String before = text.substring(0, i);
String after = text.substring(j);
text = before + text.substring(i, j).replace("\r\n", "--newline--")
+ after;
i = text.indexOf(start, j + 1);
}
return text;
}