反斜杠出现在我的字符串数组上

时间:2014-05-10 20:12:01

标签: java

我有一个String[]数组,里面有单词。我想使用冒泡排序方法按字母顺序排序。

除了某些单词之外,所有内容似乎都运行良好:例如,\r\n缩减或分层\r\n,因此这些单词不会按顺序排列。

但是,当我打印这些字词时,"\r\n"不会出现。

我尝试使用replace / replaceAll方法将其删除,但它似乎没有按照应有的方式工作。

3 个答案:

答案 0 :(得分:1)

打印时'\r''\n'符号不可见是因为它们不会产生字符 - 它们会将光标移动到其他位置。摆脱字符串两端的'\n''\r'和其他空白字符的一种简单方法是在字符串上调用trim()方法。在进行排序之前,请执行以下操作:

for (int i = 0 ; i != array.length ; i++) {
    array[i] = array[i].trim();
}

在这个循环之后,任何一个单词都不会在任何一端都有空白字符,让你的排序算法正确地比较字符串。

这假设array的任何元素都不是null。如果某些元素可以是null,请在代码中添加null检查。

答案 1 :(得分:0)

这些字符是换行符。你应该能够在字符串上调用trim()来摆脱它们。但请记住,字符串在Java中是不可变的

您必须存储trim()的结果,因为调用不会修改原始字符串。您使用的方法也应该有效,但也许您忘记存储结果。

答案 2 :(得分:0)

查看转义序列here

基本上,\r\n转义序列,这意味着"此时在文本中插入回车符"和"此时在文本中插入换行符"

因此,当您打印这些单词时,java会根据需要插入回车符或换行符。我相信Windows使用\r\n而* nix使用\n来表示应该打印新行的位置。

我不确定为什么replaceAll()没有工作;如果你提供了正确的论据,他们应该工作。你有可能忘记逃避反斜杠。