2014-01-14 129 views
0

因此,我将削减为什么需要它的解释,但会直接指向这一点。我的申请正在收到String类型的InputStream。此消息InputString稍后将放入ArrayAdapter<String>。它看起来让我们这样说:从不断变化的字符串中获取子字符串

$VER,1,8,06351.0,1207.1,N,13516.4,E,0.03,165.48,5,4,-300,0,100,500,2000,1100,500,23.1,49,1012.111,2.9,2.9,2.9,2.9,1,*FFFF\n 

其中$VER,总是在该字符串的开始,而所有的值是不断变化的。逗号,正在分离各个值,其中每个值都非常重要。所以基本上我无法预测值的外观 - 它可以是1.41234,甚至可以是字母。这样我就无法使用substring作为逗号可以登陆各个地方的字符串长度,从一开始就算。

什么是提取每个这个值的最充分和最好的方法,所以我可以分别将它们放到我自己的TextViews中?

+0

你可以使用一些正则表达式匹配这样的: //匹配数字只有 字符串regexStr =“^ [0-9] * $” – Aiapaec

回答

4

您是在查找String.split(String regex)

String s = "$VER,1,8,06351.0,1207.1,N,13516.4,E,0.03,165.48,5,4,-300,0,100,500,2000,1100,500,23.1,49,1012.111,2.9,2.9,2.9,2.9,1,*FFFF"; 
String[] a = s.split(","); 

记住使用Pattern.quote如果你需要使用这个拆就包含特殊的正则表达式字符的字符串。

String[] b = s.split(Pattern.quote(".")); 
+0

如果解决我的问题,当然我:d尽快检查。 – Lisek

+0

请注意,'“\\。”'和'Pattern.quote(“。”)'将会返回相同的正则表达式。如果将普通的任意点与转义点混合,这可能是相关的。 – tilpner

+0

@StackOverflowException - 不完全 - 在我的设置上它产生'\ Q. \ E',但你的观点是有效的,“\\”。也将打败“”的特殊性。字符。 – OldCurmudgeon

相关问题