【发布时间】:2014-08-13 09:23:01
【问题描述】:
我对编程还很陌生,我最近构建了一个 Android 应用程序,它使用 USB OTG 从 USB 串行设备读取数据。我将数据读入字节缓冲区,将其转换为字符串,然后解析字符串,以便我可以选择和使用数据的不同部分在我的应用程序上显示不同的内容。
我首先使用 example.substring(example.lastIndexOf("123"); 拆分字符串并丢失我不需要的字符串的第一部分,然后检查子字符串的长度以确保数据正确,接下来,我将子字符串数据转换为 char 数组,以便能够选择数组的不同数据元素并将它们显示在屏幕上。这似乎可行,但我只是觉得它很乱,而且解析字符串的方法可能不正确。
有人可以给我一个想法,看看是否有更有效的方法来解析字符串,或者我是否应该携带用我目前的方法。
例如:
String s = "Serial Data String TX, ID: 1, UOD: 1234, OK";
String ss = s.substring(s.lastIndexOf("ID: "));
int len = ss.length();
char[] c = ss.toCharArray();
if (len == 20) {
if (c[4] == '1') {
String mSubstring = ss.substring(12, 16);
tv1.setText(mSubString);
这是一种混乱/低效的方法吗?
【问题讨论】:
-
您想要解析/验证字符串的哪些元素?您的字符串似乎用逗号分隔,您可以使用 s.split(",") 对其进行拆分。
-
考虑到变量 ss 和 s 一样大。执行 substring 会使用从 src String 中获取的 char 数组创建新的 String。因此,通过简单地将 s 设置为 null 来释放内存是行不通的。看一下子串方法
-
预期输出是多少?字符串总是一样的吗?
-
我想要的元素是“1”和“1234”,这样我就可以在屏幕上将它们显示为 ID:1 和 OUD:1234
-
@cbrook - 你的字符串中是否总是有 ID、UOD 等?
标签: java string oop parsing performance