如何读取字符串并将值获取到数组中?

时间:2015-10-08 13:46:44

标签: java arrays numbers sequence

我想读一个字符串:

  

TRANS = 2' b00到2' b11

并将值2' b00,2' b01,2' b10,2' b11提取到数组中。如何以最简单的方式做到这一点?

有关:

String str = "TRANS = 2'b00 to 2'b11";

输出应为:

[2'b00, 2'b01, 2'b10, 2'b11]

按照与上述相同的顺序。

3 个答案:

答案 0 :(得分:0)

这样做并不是很简单,因为有很多情况,例如,如果你有:

"TRANS = 2'b00 to 3'c11"   //you would not have the good results.

这是一个分割你的字符串的例子:(它只是为了学习而不是很好的生产程序):

String str = "TRANS = 2'b00 to 2'b11";
String[] parts = str.split("="); 

String[] values= parts[1].split("to"); //part[1] is the right part after char =

int size = values.length;


String val_from = values[0].trim().split('b');
String val_to = values[1].trim().split('b');

String[] binary_values= {"00","01","10", "11"};

int start_count = 0;
for(i=0; i<4; i++){
    if(val_from[1]==binary_values[i]){
       start_count = i;
       break;
    }
}

ArrayList<String> result = new ArrayList<String>();

for(i=start_count ; i<4; i++){
    result.add(val_from[0]+binary_values[i]);
}


//here the new values are stocked in : result

答案 1 :(得分:0)

你可以删除开始和结束。使用Integer类在十进制和二进制之间进行转换。实施例

eq(ThisMessageType.class)

答案 2 :(得分:0)

这是另外一个示例代码:

    String s = "TRANS = 2'b00 to 2'b11";
    //get max and min values, 00 and 11 here;
    int max_no=Integer.parseInt(s.substring(s.length()-2, s.length()));
    int min_no=Integer.parseInt(s.substring(s.indexOf("b", 1)+1,s.indexOf("b", 1)+3));
    String [] output = new String[max_no - min_no +1];
    for(int i=min_no; i<=max_no; i++){
        output[i] = "2'b"+ (i <10 ? "0" : "")+i;
    }
    for(int i=0; i< output.length ;i++){
        System.out.println(output[i]);