如何在保持不同分隔符计数的同时拆分字符串?

时间:2016-04-17 18:11:06

标签: java string list dfa

所以输入看起来像{q1,q2},{a,b},{[q1:a:q2],[q2:b:q2]},q1,{q2} 几乎是DFA。

我想要做的是通过逗号,括号和冒号分隔它。然后单独打印出结果(即大括号中的所有内容都有自己的方法)。

示例:

第1部分 = q1 q2

Part2 = a b

第3部分 = q1使用

进入q2

q2与b

进入q2

Part4 = q1

第5部分 = q2

我在想的是保持大括号的数量,如果大括号的数量= 1,3,5等......他们会相应地执行这些方法。

问题是,当我将它用作字符串时,我无法确保将“q1”视为一个字符串而不是“q”,的 “1”

当我使用 .split(\ s *,\ s * | \ {| \} | \ [| \])拆分字符串时,它会关闭这些字符,我不能更长时间的数量。

或者我应该保持花括号,打印一个子串(取下花括号),一旦它看到一个接近的花括号,它将移动到下一个方法。

我尝试了什么:

拆分字符串并存储到列表中

List<String> listDFA = Arrays.asList(DFA.split("\\s*,\\s*|\\{|\\}|\\[|\\]"));

启动DFA

for (index = 0; index<size; index++){
     if (curlyBrackets.contains(listDFA.get(index))){ //curlyBrackets has "{}"
        System.out.println("curly"); // just a test if it sees a curly will omit later
     }

     System.out.println(index); // again a test wanted to see what was being indexed
     System.out.println(listDFA.get(index));
  }

我想尝试一下:

for (index = 0; index <size; index++){
     if (curlyBrackets.contains(DFA.substring(index, index+1))){
        curly++;
        if (curly == 1){
           index++;
           states(DFA);
        }
     }
}

状态()是:

public static void states (String DFA){
  //List<String> stateQ = new ArrayList<String>(Arrays.asList(DFA.split(" , "))); // I tried creating the list here, but then there would be a couple of incosistent variable such as index and size.
  lineVector = DFA.split(",");
  int size = lineVector.length;
  while(lineVector(index) != '}'){
     System.out.println(stateQ[index]); //DFA.charAt(index) lineVector[index] was trying either or...
     index++;
  }
  curly++;

1 个答案:

答案 0 :(得分:0)

我想这个问题有点热门,但我仍然使用逗号分隔字符串作为分隔符(而不是括号)。

List<String> listDFA = Arrays.asList(DFA.split("\\s*,\\s*"));

因此,使字符串的每个内容与索引相关联(括号附加到最近的非逗号)。然后将该索引存储到字符串中。

String currString = listDFA.get(index);

然后查看该字符串的任何部分是否有大括号

if (currString.indexOf('{') != -1 || currString.indexOf('}') != -1 )

一旦匹配花括号条件,执行该块

if (curly <= 2){
           Q.add(currString);
     }

现在我需要弄清楚的是如何使用方括号,因为我必须将它们存储到2D数组