【问题标题】:How to split a String on #*#*如何在 #*#* 上拆分字符串
【发布时间】:2019-02-27 06:41:12
【问题描述】:

我有一个String,其值如下:

B/W 0-2 hours of bus start time#*#*B/W 2-9 hours of bus start time#*#*Above 9 hours of bus start time--0%#*#*50%#*#*90%

split() 这个#*#* 怎么样?我需要如下输出:

B/W 0-2 hours of bus start time

B/W 2-9 hours of bus start time

Above 9 hours of bus start time

0%

50%

90%

【问题讨论】:

  • 到目前为止你尝试过什么代码?
  • 首先确定一组可能的分隔符。 #*#* 在您的情况下不是有效的分隔符,在您的文本中没有单独出现。
  • @J_D in java iam 尝试
  • @NMK 我已经发布了更新的答案,以及您需要的输出。检查一下。
  • @NMK 你为什么删除问题的文本?提供的任何答案对您有用吗?

标签: java android split


【解决方案1】:

这样分割你的字符串:

  String mStr = "B/W 0-2 hours of bus start time#*#B/W 2-9 hours of bus start time##Above 9 hours of bus start time--0%##50%##*90%";
        Log.e("mStr==", "===" + mStr);

        String[] pickList = mStr.split("#\\*#|##|--|##\\*|\\*");

        Log.e("pickList==", "===" + pickList.length);

        for (int i = 0; i < pickList.length; i++) {
            Log.e("pickList==", "===" + pickList[i]);
        }

pickList 中,您将获得包含拆分数据的输出列表。

【讨论】:

  • 这行不通,因为#*#只有1次出现,只会将其分成2部分
  • 这不会产生预期的结果。
  • @J_D 等等,我正在更新我的答案。
  • @NMK 检查我更新的答案。它现在显示为您想要的预期输出
  • @NMK 如果你觉得我的回答有帮助,那么你可以接受这个回答,所以其他开发者也可以从中获得帮助。
【解决方案2】:

试试下面的 -

yourString.split = yourString.split.replace("*","");
yourString.split = yourString.split.replace("--","");
String[] pickList = yourString.split("##");

【讨论】:

    【解决方案3】:

    您的字符串应该包含相同的分隔符。如果您有不同的分隔符,则需要预测哪些分隔符可以存在并将这些分隔符作为参数传递给 split() 分隔符 |签名。

    例如,要使用# 和* 符号作为分隔符,你需要这样写: 字符串变量.split("\#|\*");

    【讨论】:

      【解决方案4】:

      您可以使用单个alternation 匹配#* 的1+ 个重复或匹配--

      (?:#\*)+|--
      

      查看regex demo | Java demo

      例如:

      String s = "B/W 0-2 hours of bus start time#*#*B/W 2-9 hours of bus start time#*#*Above 9 hours of bus start time--0%#*#*50%#*#*90%";
      String[] parts = s.split("(?:#\\*)+|--");
      
      for (String part : parts) {
          System.out.println(part);
      }
      

      结果

      B/W 0-2 hours of bus start time
      B/W 2-9 hours of bus start time
      Above 9 hours of bus start time
      0%
      50%
      90%
      

      【讨论】:

        【解决方案5】:

        字符串 finalValue = ""; String mystring="B/W 0-2 小时巴士开始时间#*#B/W 2-9 小时巴士开始时间##9 小时以上巴士开始时间-- 0%##50%##*90%";

        String[] splitSt1 = mystring.split("--");
        String detailsString = splitSt1[0];
        String percentageString = splitSt1[1];
        String[] detailsSt1 = detailsString.split("#\\*#\\*");
        String[] percentageSt2 = percentageString.split("#\\*#\\*");
        
        if(detailsSt1.length == detailsSt1.length ){
            for(int i=0;i<=(detailsSt1.length-1);i++ )
            {
                finalValue = finalValue +"* "+ detailsSt1[i]+ "-->" + percentageSt2 [i] +"\n"+"\n";
                my_text_view_id.setText(finalValue);
            }
        

        }

        输出:

        • B/W 0-2 小时公交车开始时间 --> 0%
        • B/W 2-9 小时巴士开始时间 --> 50%
        • 9 小时以上的巴士开始时间 --> 90%

        【讨论】:

          猜你喜欢
          • 2022-01-14
          • 1970-01-01
          • 2020-09-22
          • 2010-10-29
          • 1970-01-01
          • 2010-10-10
          • 1970-01-01
          • 2014-08-05
          • 2015-08-29
          相关资源
          最近更新 更多