繁体   English   中英

在两个分隔符之间分开

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM