拆分字符串动态

时间:2017-01-31 14:13:34

标签: java split

我需要帮助来分隔字符串,例如:

String trunk = "50 | 1 | 13" / *数据库信息(动态)* /

String[] dial_discagem = tronco.split("|");

我需要获取dial_disc信息并通过传递trunk ID来调用“getDialDiscing”函数。 GetDialDiscing将返回一个String,我必须按如下方式挂载它。

dial = "SIP/trkfixo|SIP/TESTESIP|Khomp/b0l1";

我试着这样做:

String[] dial_discagem = tronco.split("|");
            String dial = "";

for(int i=0;i<dial_discagem.length;i++){

      String[] innerData = dial_discagem[i].split("|");
      String id = innerData[i];
      dial += getDialDiscagem(Integer.parseInt(id))+"|";
}

但这会产生以下错误:

**Exception in thread "Thread-36" java.lang.ArrayIndexOutOfBoundsException: 1
at local.astman.db.CampanhaClienteChamadaDAO.getChamadasPendentes(CampanhaClienteChamadaDAO.java:303)**

2 个答案:

答案 0 :(得分:2)

你需要一个转义字符,例如:

final String dial = "SIP/trkfixo|SIP/TESTESIP|Khomp/b0l1";
final String[] discagem = dial.split("\\|");
for (int i = 0; i < discagem.length; i++) {
  System.out.println(discagem[i]);
}

答案 1 :(得分:1)

您需要先声明并定义数组,例如在循环之外。

比您必须替换所有空格而不是|分割。

示例代码

String trunk = "50 | 1 | 13";
        String temp = trunk.replaceAll("\\s+","");
        String[] dial_discagem = temp.split("\\|");
        String dial = "";
        String[] innerData = new String[dial_discagem.length];
        for(int i=0;i<dial_discagem.length;i++){

          innerData[i] = dial_discagem[i];
          String id = innerData[i];
          dial += getDialDiscagem(Integer.parseInt(id))+"|";
        }