Java 如何将字符串转换为具有而不是换行符\n

Java 如何将字符串转换为具有而不是换行符\n,java,string,junit,newline,Java,String,Junit,Newline,正在走向失败 所以我通过eclipse调试变量控制台检查了两个值 myString1 AssertThat( myString1 , is (myString2)); myString2 hello my name is alex 如果我尝试使用String.compareTo,则失败 我的问题是二,, 1.那些真的是一样的吗?控制台显示器? 2.如果没有,如何从myString1转换到myString2?使用此导入-org.apache.commons.lang.StringEscape

正在走向失败

所以我通过eclipse调试变量控制台检查了两个值

myString1

AssertThat( myString1 , is (myString2));
myString2

hello
my name is 
alex
如果我尝试使用String.compareTo,则失败

我的问题是二,, 1.那些真的是一样的吗?控制台显示器?
2.如果没有,如何从myString1转换到myString2?

使用此导入-org.apache.commons.lang.StringEscapeUtils

hello\n my name is\n alex

将作为您问题的提示

1不,它们显然不一样

2.这个怎么样:

StringEscapeUtils.escapeJava(StringVariableNameHere);
或者更好:

myString2 = myString1.replaceAll("\\n", "\\\\n");

不需要使用外部软件包。

这里要理解的关键是:我们无法告诉您的需求

这真的很简单:如果a.equalsb返回true,两个字符串对象才相等。因此,很明显,示例中的两个字符串不相等

但这背后的问题是:它对您的生产代码是否重要;因此:您的测试代码应该如何处理它

意思是:作为生产和测试代码的所有者,您必须了解您是否关心这些换行符。有很多选项可以解决您的测试失败问题:

为什么一个字符串中有\n个字符;另一个没有?您的期望值是否完全错误? 或者你的期望值真的正确吗;因此:生产代码给出了一个意外的结果;从而表明生产代码中存在问题? 因此,是的,正确的答案可能是对断言或其预期值进行按摩,以允许使用此类字符。但正确的答案可能是修复损坏的生产代码。当您使用assertThat时,您可以为忽略字符的字符串编写自己的匹配器;这将为您的示例字符串提供true


如前所述:有几个选项可以解决这个问题;但是,您必须了解哪一个解决了您的问题。

myString2中的第一个\n和我的之间似乎还有一个额外的空间。谢谢大家的提示。我很困惑,因为当我检查一个日志文件时,myString1只是显示myString2表单。为了解决我的问题,我简单地使用了escapeJava。
myString2 = myString1.replaceAll(System.getProperty("line.separator", "\\\\n");