我有一个String[]
数组,里面有单词。我想使用冒泡排序方法按字母顺序排序。
除了某些单词之外,所有内容似乎都运行良好:例如,\r\n
缩减或分层\r\n
,因此这些单词不会按顺序排列。
但是,当我打印这些字词时,"\r\n"
不会出现。
我尝试使用replace / replaceAll方法将其删除,但它似乎没有按照应有的方式工作。
答案 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()
没有工作;如果你提供了正确的论据,他们应该工作。你有可能忘记逃避反斜杠。