[英]Java - List<String> printing \n instead of showing a line break
[英]How to convert string to have \n instead of line break
AssertThat( myString1 , is (myString2));
失败了。
因此,我通过Eclipse调试“变量”控制台检查了两个值。
myString1
hello
my name is
alex
myString2
hello\n my name is\n alex
如果我尝试使用String.compareTo,它将失败。
我的问题是两个,1.真的一样吗? (控制台显示)? 2.如果没有,如何将myString1转换为myString2?
使用此导入-org.apache.commons.lang.StringEscapeUtils
StringEscapeUtils.escapeJava(StringVariableNameHere);
可以提示您的问题
1)不,它们显然不同。
2)这是怎么回事:
myString2 = myString1.replaceAll("\\n", "\\\\n");
或更好:
myString2 = myString1.replaceAll(System.getProperty("line.separator", "\\\\n");
无需使用外部软件包。
这里要了解的关键是: 我们 无法告诉您您的要求 。
这非常简单:两个字符串对象仅在a.equals(b)
返回true 时才相等。 因此,显然,示例中的两个字符串不相等。
但是,这背后的问题是:它与您的生产代码有关吗? 因此:您的测试代码应如何处理?
意思是: 你作为生产和测试代码的拥有者, 你有,如果你关心那些换行符理解。 可能有很多选择可以解决您的测试失败:
expected value
仅仅是错误的吗? 因此,是的,正确的答案可能是对断言(或其期望值)进行处理以允许此类\\ n字符。 但是正确的答案也可能是“修复损坏的生产代码”。 在使用assertThat时,您可能会为自己的字符串编写匹配器,而这些字符串只是以某种方式忽略了\\ n字符。 这将为您的示例字符串提供“ true” ...
如前所述:有几种方法可以“修复”此问题; 但您必须了解哪一个确实可以解决您的问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.