我试图将多行字符串中的Unix样式的行结尾(LF
)转换为Windows样式(CR LF
)。
我的攻击计划是:
CR LF
LF
个实例
LF
CR LF
个实例
但是,这段代码与"\r\n"
不匹配:
String test = "test\r\ncase";
test.replaceAll("\r\n","\n");
PrintWriter testFile = new PrintWriter("test.txt");
testFile.print(test);
testFile.close();
我已经尝试过使用双/三/四反斜杠。没有骰子。
我也知道test
字符串不包含文字\r\n
,因为它在打印到文件时会将其检测为CR LF
。
我在这里缺少什么?
答案 0 :(得分:1)
您没有从代码中获取修改后的字符串。
字符串是不可变的,因此您需要保存replaceAll
的返回值。没有方法可以更改String
String test = "test\r\ncase";
//Print the character before
for(char c : test.toCharArray()){ System.out.print((int)c + " ");};
System.out.println();
//Save the replace result
test = test.replaceAll("\r\n","\n");
//Print the character after
for(char c : test.toCharArray()){ System.out.print((int)c + " ");};
显示测试首先未更改然后更改
116 101 115 116 13 10 99 97 115 101 //BEFORE
116 101 115 116 10 99 97 115 101 //AFTER