【问题标题】:break large String into small Strings将大字符串分成小字符串
【发布时间】:2016-08-01 16:06:37
【问题描述】:

我有一个包含 ID 示例的大字符串:

HD47-4585-GG89

在上面我有一个单个对象的 id,但有时它可能包含多个对象的 id,如下所示:

HD47-4585-GG89-KO89-9089-RT45

上面有 2 个对象的 id 现在我想将上面的字符串转换为数组或多个小字符串 类似:

id1 = HD47-4585-GG89

id2 = KO89-9089-RT45

每个 id 都有固定数量的字符,这里是 14 个(也包括符号),并且单个字符串中的总 id 的数量不确定

我不知道怎么做,谁能指导我?

我认为我所要做的就是剪辑字符串的前 14 个字符,然后为其分配一个变量并重复此操作直到字符串为空

【问题讨论】:

  • 你的方法有什么问题?
  • 我不是 java 人,我必须为服务器端代码做这件事,这就是为什么我不知道从哪里开始@JornVernee
  • 我得到了这个 api s = s.substring(0, Math.min(s.length(), 14)); 用于修剪前 14 个字符,但是如何处理这个结合了两个 id 的 - 符号
  • @remyboys 找到 id 后可以跳过 1 个字符。

标签: java string android-studio


【解决方案1】:

你也可以使用正则表达式:

String input = "HD47-4585-GG89-KO89-9089-RT45";

Pattern id = Pattern.compile("(\\w{4}-\\w{4}-\\w{4})");
Matcher matcher = id.matcher(input);

List<String> ids = new ArrayList<>();

while(matcher.find()) {
    ids.add(matcher.group(1));
}

System.out.println(ids); // [HD47-4585-GG89, KO89-9089-RT45]

Ideone

虽然这是假设每组字符 (HD47) 的长度为 4。

【讨论】:

    【解决方案2】:

    使用番石榴分离器

    class SplitIt
    {
        public static void main (String[] args) throws java.lang.Exception
        {
            String idString = "HD47-4585-GG89-KO89-9089-RT45-HD47-4585-GG89";
    
            Iterable<String> result = Splitter
                    .fixedLength(15)
                    .trimResults(CharMatcher.inRange('-', '-'))
                    .split(idString);
            String[] parts = Iterables.toArray(result, String.class);
            for (String id : parts) {
                System.out.println(id);
            }
        }
    }
    

    【讨论】:

      【解决方案3】:

      StringTokenizer st = new StringTokenizer(String,"-");

      while (st.hasMoreTokens()) {

         System.out.println(st.nextToken());
      

      }

      这些标记可以存储在一些数组中,然后使用索引可以获得所需的数据。

      【解决方案4】:
      String text = "HD47-4585-GG89-KO89-9089-RT45";
      String first = "";
      String second = "";
      List<String> textList = Arrays.asList(text.split("-"));
      for (int i = 0; i < textList.size() / 2; i++) {
          first += textList.get(i) + "-";
      }
      for (int i = textList.size() / 2; i < textList.size(); i++) {
          second += textList.get(i) + "-";
      }
      first = first.substring(0, first.length() - 1);
      second = second.substring(0, second.length() - 1);
      

      【讨论】:

        猜你喜欢
        • 2016-05-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-07-14
        • 1970-01-01
        • 1970-01-01
        • 2015-06-18
        相关资源
        最近更新 更多