拆分从char数组构建的String

时间:2017-02-13 16:39:29

标签: java string buffer

我正在尝试拆分格式

的特定字符串
0001,0004,dd/mm/yy hh:mm:ss,01,value01,value02;

以便提取并保存value01value02。我怎么能这样做?

这是我到目前为止所尝试的内容:

//buffer contains a String like: "0001,0004,dd/mm/yy hh:mm:ss,01,18,750"
String string = new String(buffer,0,len);

String[] parts = string.split(",");

String temp = parts[5];
String lum = parts[6];
System.out.print(temp);
System.out.print(lum);

使用此代码,我在Netbeans中运行程序时得到ArrayIndexOutofBounds。 Image of error description

也尝试了这种方法:

//buffer contains a String like: "0001,0004,dd/mm/yy hh:mm:ss,01,18,750"
String s= new String(buffer,0,len);

String aux = s + ",";
String[] dados = aux.split(",");          
float valor1 = Float.parseFloat(dados[5]);
float valor2 = Float.parseFloat(dados[6]);
System.out.print(aux);

3 个答案:

答案 0 :(得分:1)

此:

String temp = parts[5];
String lum = parts[6];

应该是这样的:

String temp = parts[4];
String lum = parts[5];

请记住arrays in Java are zero-based。所以,如果你这样做:

String[] parts = "0001,0004,dd/mm/yy hh:mm:ss,01,value01,value02".split(",");

然后" 0001"会在parts[0]," 0004"在parts[1]," value01"在parts[4]等。

答案 1 :(得分:0)

实现你想要做的事情非常简单。

假设你的字符串总是看起来像:
0001,0004,dd/mm/yy hh:mm:ss,01,value01,value02;

只需切断不需要的字符串的开头,然后提取值:

// This can be done in hundreds of ways, for the sake of simplicity i'll use substring
String s ="0001,0004,dd/mm/yy hh:mm:ss,01,value01,value02;";
String cutOff = s.substring(31, s.length()-1);
String[] results = cutOff.split(",");

答案 2 :(得分:0)

请找到以下代码。它在安德鲁的代码中只有一点修改。由于我们在分割成String数组后存储字符串,并且很明显数组索引以0开头。这就是为什么为了获得value01和value02,我们应该使用索引4和5。

public class JavaApplication1
 {
  public static void main(String[] args)
  {
    String str="0001,0004,dd/mm/yy hh:mm:ss,01,value01,value02";
    String [] strArr=str.split(",");
    String temp=strArr[4];
    String lum=strArr[5];
    System.out.println(temp);
    System.out.println(lum);
 }   
}

Please find the output in the image