content: /*
   * Copyright 1999-2012 Alibaba Group.
   *  
   * Licensed under the Apache License, Version 2.0 (the "License");
   * you may not use this file except in compliance with the License.
   * You may obtain a copy of the License at
   *  
   *      http://www.apache.org/licenses/LICENSE-2.0
   *  
   * Unless required by applicable law or agreed to in writing, software
   * distributed under the License is distributed on an "AS IS" BASIS,
   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   * See the License for the specific language governing permissions and
   * limitations under the License.
   */
  package com.alibaba.cobar.parser.util;
  
  /**
   * @author <a href="mailto:shuo.qius@alibaba-inc.com">QIU Shuo</a>
   */
  public final class PairUtil {
      private static final int DEFAULT_INDEX = -1;
  
      /**
       * "2" -&gt; (0,2)<br/>
       * "1:2" -&gt; (1,2)<br/>
       * "1:" -&gt; (1,0)<br/>
       * "-1:" -&gt; (-1,0)<br/>
       * ":-1" -&gt; (0,-1)<br/>
       * ":" -&gt; (0,0)<br/>
       */
      public static Pair<Integer, Integer> sequenceSlicing(String slice) {
          int ind = slice.indexOf(':');
          if (ind < 0) {
              int i = Integer.parseInt(slice.trim());
              if (i >= 0) {
                  return new Pair<Integer, Integer>(0, i);
              } else {
                  return new Pair<Integer, Integer>(i, 0);
              }
          }
          String left = slice.substring(0, ind).trim();
          String right = slice.substring(1 + ind).trim();
          int start, end;
          if (left.length() <= 0) {
              start = 0;
          } else {
              start = Integer.parseInt(left);
          }
          if (right.length() <= 0) {
              end = 0;
          } else {
              end = Integer.parseInt(right);
          }
          return new Pair<Integer, Integer>(start, end);
      }
  
      /**
       * <pre>
       * 将名字和索引用进行分割 当src = "offer_group[4]", l='[', r=']'时，
       * 返回的Piar<String,Integer>("offer", 4);
       * 当src = "offer_group", l='[', r=']'时， 
       * 返回Pair<String, Integer>("offer",-1);
       * </pre>
       */
      public static Pair<String, Integer> splitIndex(String src, char l, char r) {
          if (src == null) {
              return null;
          }
          int length = src.length();
          if (length == 0) {
              return new Pair<String, Integer>("", DEFAULT_INDEX);
          }
          if (src.charAt(length - 1) != r) {
              return new Pair<String, Integer>(src, DEFAULT_INDEX);
          }
          int offset = src.lastIndexOf(l);
          if (offset == -1) {
              return new Pair<String, Integer>(src, DEFAULT_INDEX);
          }
          int index = DEFAULT_INDEX;
          try {
              index = Integer.parseInt(src.substring(offset + 1, length - 1));
          } catch (NumberFormatException e) {
              return new Pair<String, Integer>(src, DEFAULT_INDEX);
          }
          return new Pair<String, Integer>(src.substring(0, offset), index);
      }
  
  }
  