我使用 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”,它正在运行。
答案 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
总是为我工作。