能否假设所有Android设备均使用“\n”作为换行分隔符?
问题解答
几乎所有常规Android设备上,System.getProperty("line.separator")的返回值都是\n,你以\n作为跨设备传输数据的换行分隔符,通用场景下不会出现识别问题。
细节说明
- AOSP(安卓开放源代码项目)的底层源码已经硬编码默认换行符为
\n,该属性默认值不会随设备地区、系统语言、厂商常规定制逻辑改动。只有用户主动root设备后手动修改系统属性,才可能改变这个值,这类极端非常规场景不需要纳入通用兼容的覆盖范围。 - 注意你写的判断逻辑存在语法问题:Java/Kotlin中字符串内容比较不能用
==,==比较的是字符串对象的内存引用而非内容,哪怕两个字符串内容完全相同,也可能因为实例不同返回false,正确的判断写法应该是"\n".equals(System.getProperty("line.separator"))。 - 如果要100%规避所有极端情况的影响,你可以直接在应用层统一传输规则:不管系统默认换行符是什么,你的数据传输格式都固定用
\n作为换行分隔符,解析数据时直接按\n做分割,完全不依赖系统的line.separator属性,这样即可保证所有Android设备的解析结果完全一致。
内容的提问来源于stack exchange,提问作者Cheok Yan Cheng
相关产品推荐
相关产品推荐

