[英]Split between two delimiters
我有关于字符串的这些信息:
0183600NEWDEVICE
0147900:4239
0147901:0200
0147902:2971
0157903:01598
0157904:02754
0157905:03383
0157906:02590
0187908:04.02.01
0157909:19.45
0117911:0
0098540
我只想要最后的信息(在“:”和“\\ n”之间)
我的意思是:4239,0200,2971等
我试图使用split:
String[] result = readMessage.split(":|\n");
它有效,但我只想要“:”和“\\ n”之间的信息而不是其余部分。 我的意思是:
result[0] = 4239
result[1] = 0200
result[2] = 2971
...
我该如何解决?
编辑:之后我想取“结果”并将其中的每一部分放在TextView上
For example:
mTextView.setText("FEV = " + result[0] + "\n");
我的解决方案:(感谢每一个人!)
String[] result = readMessage.split(":");
int j=0;
for (int i=0;i<result.length;i++){
if (result[i].contains("\n")){
result[j] = result[i];
String [] result2 = result[j].split("\n");
result[j]=result2[0];
j++;
}
}
您可以尝试以下方法而不是拆分 -
Pattern p = Pattern.compile(".+:(.+)\n");
Matcher m = p.matcher(x);
List<String> fields = new ArrayList<String>();
while (m.find()) {
fields.add(m.group(1));
}
注意:您可能必须修改正则表达式。
拆分会给你一个W ='想要'的数组,N ='不想要'。
如果输入模式稳定,则输出数组将具有模式
NWNWNWNW ...
所以你可以简单地得到偶数索引。
另一种解决方案是逐行读取的(按行分割)。 然后查找冒号,并丢弃冒号前的内容(包括在内)。
我亲自做正则表达路线!
你可能会这样做:
String str = "one:two";
String[] splitted = str.split(":");
然后你可以检查一下:
for (int i=0;i<splitted.length;i++){
if (splitted[i].contains("\n")){
splitted[i].replace("\n","");
}
}
只需将“\\ n”分开,而不是分别放在\\n
和\\n
上:
为此起作用。
string[] result = readMessage.split("\n");
接着:
String str = "test:one";
String lastBit = str.substring(str.indexOf(":")+1, str.length());
System.out.println(lastBit); //output = "one"
或者,您可以在以下位置再次拆分每个字符串:
并获取第二个字符串(对于第一个拆分操作返回的每个字符串)。
List<String> output = new ArrayList<String>();
String[] lines = readMessage.split("\n");
for(String line : lines)
{
int index = line.indexOf(":");
if(index != -1 && index < line.length)
{
output.add(line.substring(index + 1, line.length());
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.