在两个分隔符之间分开

时间:2014-04-22 21:07:28

标签: java android split

我在字符串上有这个信息:

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++;
                }
            }

6 个答案:

答案 0 :(得分:2)

您可以尝试以下方法而不是拆分 -

Pattern p = Pattern.compile(".+:(.+)\n");
Matcher m = p.matcher(x);
List<String> fields = new ArrayList<String>();
while (m.find()) {
    fields.add(m.group(1));
}

注意:您可能需要修改正则表达式。

答案 1 :(得分:0)

Split会给你一个W ='want'的数组,N ='not wanted'。

如果输入模式稳定,输出数组将具有模式

... NWNWNWNW

所以你可以简单地得到偶数索引。


另一个解决方案是逐行读取(按行分割)。然后查找冒号,并丢弃冒号前的内容(包括在内)。

答案 2 :(得分:0)

我亲自做正则表达式路线!

答案 3 :(得分:0)

您可能会这样做:

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","");
    }
}

答案 4 :(得分:0)

只需将“\ 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"

或者,您可以在:上再次拆分每个字符串并获取第二个字符串(对于第一个拆分操作返回的每个字符串)。

答案 5 :(得分:0)

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());
     }    
}