如何拆分Swift消息?

时间:2016-10-08 16:24:22

标签: javascript java arrays split

我遇到问题的人是我有这样的输入: -

:21:ARI
:22:萨钦
:23:维鲁
危险
:25:sevi

我必须以21匹配到ari的方式分割,我通过使用行分割器来分割整个输入。但我不能将值危险与我的代码在下面的标记23匹配,任何一个都有不同的逻辑请帮忙: -

   foreach (KeyValuePair<string, int> item in dictAndNames)
   {
      Console.Write(item.Key+"=>" + item.Value.ToString());               
   }     

3 个答案:

答案 0 :(得分:1)

您的exapmle的预期行为是什么? 23应该对应2个值 - “病毒”和“危险”吗?

我可以建议标记+数据的每个片段通过字符“\ n:”的组合与明显的片段分开;并且每个标签可以有多个以“\ n”分隔的数据元素。

如果这是真的,那么您可以修改您的splittng代码,如下所示,它应该工作

    String tempString = sb.toString().substring(1); // Remove first colon
    System.out.println("\nInitial string before splitting = " + tempString);

    String[] tok = tempString.split("\n:"); //  Split by new line and colon
    System.out.println("\ntok.length = " + tok.length);
    System.out.println("\nArray after splitting of initial string = " + Arrays.toString(tok));

    for(String string:tok){
        System.out.println("\nStarting to match values for string = " + string);
        if(string.contains(":")){
            int last=string.lastIndexOf(':');
            String tag=string.substring(0,last);
            String[] data=string.substring(last+1).split("\n");

            System.out.println("tag = " + tag + ", data = " + Arrays.toString(data));
        }else{
            System.out.println("String \"" + string + "\" does not contain ':' character.");
        }
    }

答案 1 :(得分:0)

如果您期望多行数据,请分开&#34; \ n:&#34;并使用正则表达式

    String[] tok = sb.toString().split("\n:");
    Pattern p = Pattern.compile(":?(.*):(.*)", Pattern.DOTALL);
    for(String string:tok){
        Matcher matcher = p.matcher(string);
        if (matcher.matches()) {
            String tag = matcher.group(1);
            String data = matcher.group(2);
            System.out.println(tag+"_"+data);
        }
    }

答案 2 :(得分:0)

得到了家伙感谢大家的宝贵建议

public class HelloWorld{

public static void main(String []args){

 StringBuilder sb=new StringBuilder();  
    sb.append(":20:akshay");
     sb.append("\n");
    sb.append(":21:ari");
     sb.append("\n");
    sb.append(":22:sachin");
     sb.append("\n");
    sb.append(":23:viru");
     sb.append("\n");
    sb.append("hazard");
     sb.append("\n");
    sb.append(":25:sevi");
    String sb1=sb.substring(sb.toString().indexOf(':')+1);

    String[] tok = sb1.toString().split("\n:");
    System.out.println(tok.length);
    for(String string:tok){
       // if(string.contains(":")){
             String[] data=string.split(":");

            String tag=data[0];
            String msgData=data[1];
           System.out.println("tag::"+tag+"::data::"+msgData);

       // }


    }





     }
}