Java 奇怪的字符串。拆分(“\n”)行为

Java 奇怪的字符串。拆分(“\n”)行为,java,split,Java,Split,我有一个.txt文本文件,包含一些行。。 我使用RequestBuilder对象加载contain,并使用 words=String.split(“\n”);但是我想知道,为什么结果包含“\n”部分。。 例如,我的文本: abc def ghi 结果是, words[0] = "abc\n" words[1] = "def\n" words[2] = "ghi\n" 非常感谢您的帮助。提前感谢。尝试使用string.split(\\n+”)。或者更好的是,如果split使用regex,那么应

我有一个.txt文本文件,包含一些行。。 我使用RequestBuilder对象加载contain,并使用 words=String.split(“\n”);但是我想知道,为什么结果包含“\n”部分。。 例如,我的文本:

abc
def
ghi
结果是,

words[0] = "abc\n"
words[1] = "def\n"
words[2] = "ghi\n"

非常感谢您的帮助。提前感谢。

尝试使用
string.split(\\n+”)
。或者更好的是,如果split使用regex,那么应该使用“\\n”而不是“\n”

Windows回车(
“\r\n”
)不会对结果产生明显的影响,也不需要转义传递给
String.split()的正则表达式

下面使用
str.split(“\n”)
证明了上述两种情况:


如果您确实有Windows回车,您应该(尽管严格地不必要)使用<代码> Str.S分裂(“\r\n”)< /> >:

您也可以考虑<代码> String []行=文本.Seple(“\\\n”);<代码>

尝试使用
string.split(\\\\n”)
。它适合我。

您确定您的线路以
\n
结尾吗?它们可能会以
\r\n
或其他方式终止。噢,这是可能的,您能告诉我如何检查它吗?那么,当我在文本编辑器中按enter键时,会创建什么呢?你总是可以.trim()结果,我想它会删除其中的任何内容。好的,我会尝试一下。。谢谢:Dcool。谢谢我不想在没有医生的双重检查的情况下依赖记忆。因此,将此留给OP查看。:)虽然
String.split()
需要一个正则表达式,但这不是必需的。但这不会也跳过空行吗?(也许希望如此)这是没有必要的,看我的答案。双反斜杠是没有必要的。正则表达式已经为转义的构造(如“\n”)指定反斜杠。请看“反斜杠、转义和引用”,太棒了!您的回答让一切都很清楚,但在文本编辑器中,如何生成以\n结尾的文本?所以\r\n仅在windows中?@业余爱好者许多windows应用程序将使用
\r\n
结束一行,而Linux和其他应用程序使用
\n
。如果要在Java中剥离回车符(
\r
),请使用
str.replaceAll(“\r\n”,“\n”)
。查找一个不使用回车的Windows应用程序时,首先必须询问其他人。此拆分表达式无法在chrome浏览器中拆分多行输入。因为Java需要正则表达式作为字符串文字。您有您的\n,但\在正则表达式中也是特殊的。让事情复杂化的是,你在正则表达式中逃跑的方式也是\。因此,您需要再次对其进行转义以生成\\n,这似乎已经足够了。。对于正则表达式。。但是Java将正则表达式模式作为字符串。它将您视为逃离\\n以仅使n。使用\\\n时,Java看到\\n,正则表达式认为您的意思是\n,但在正则表达式中,\仍然被视为一个特殊字符。所以regex\\=\和Java\\=\留给您的是\\n,Java最终将其视为\n。就在刚才,他逃走了。