\ n不会破坏Java中的行

时间:2013-04-13 16:03:10

标签: android

我使用 google api 从某些数据生成QR码。它应该代表 VCARD格式。 我打电话给this网址。

当我阅读QR码时,我很好地收回了我添加到链接中的所有信息,除了一个小错误。

行演员不能正常工作

我在Java(Android)中找到了这个:

BEGIN:VCARD\nVERSION:2.1\nFN:Adam Varhegyi\nN:Adam;Varhegyi\nEMAIL:somemai@address.com\nTEL:1234567\nINTERNET:;\n\nORG:Mycompanyname\nEND:VCARD

而不是:(\ n =换行符)

BEGIN:VCARD\nVERSION:2.1
FN:Adam Varhegyi
N:Adam;Varhegyi
EMAIL:somemai@address.com
TEL:1234567
INTERNET:;
ORG:Mycompanyname
END:VCARD

我尝试使用使用扫描仪来解决这个问题:

Scanner sc = new Scanner(myVCardStringInputFromQrCode);
sc.useDelimiter("\n");
while(sc.hasNext()){
    String str = sc.next();
    Log.i("VCARD LINE: ", str);
}

此方法仅返回1行! 也会忽略“\ n”标记。

修改

我也尝试使用System.getProperty("line.separator"),但没有用。

编辑第2部分:

if(myVCardStringInputFromQrCode.contains("\n")){
    Log.i("Found linebreak", "TRUE");
}
else{
    Log.i("Found linebreak", "FALSE");
}

这段代码让我回归“FALSE” - 当Java清楚地看到它时,它说它不包含“\ n”。

有人知道这里发生了什么事吗?

编辑第3部分:

由于某种原因删除了正确答案,因此我无法将其标记为“答案”。 解决方案是“\\ n”而不是“\ n”,它正在运行。

3 个答案:

答案 0 :(得分:2)

您可以使用System.getProperty("line.separator")

答案 1 :(得分:1)

您看到的\n不是实际的换行符。它是一个转义换行符(反斜杠,后跟一个“n”字符)。

尝试用实际换行符替换所有出现的内容。请注意,您应该使用\r\n换行符序列,因为这是vCards应根据规范使用的换行符序列。

myVCardStringInputFromQrCode = myVCardStringInputFromQrCode.replace("\\n", "\r\n");

请记住将\\n传递给第一个参数,而不是\n。你需要两个反斜杠才能获得文字反斜杠。

答案 2 :(得分:0)

\r\n而不是\n总是为我工作。