content: /**
   * Copyright 2014 Zhenguo Jin
   * <p/>
   * 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
   * <p/>
   * http://www.apache.org/licenses/LICENSE-2.0
   * <p/>
   * 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.rsen.github.androidutils;
  
  import android.text.TextUtils;
  
  import java.util.Locale;
  
  /**
   * 字符串操作工具包 结合android.text.TextUtils使用
   *
   * @author jingle1267@163.com
   */
  public final class StringUtils {
  
      /**
       * Don't let anyone instantiate this class.
       */
      private StringUtils() {
          throw new Error("Do not need instantiate!");
      }
  
      /**
       * Returns true if the string is null or 0-length.
       *
       * @param str the string to be examined
       * @return true if str is null or zero length
       */
      public static boolean isEmpty(CharSequence str) {
          return TextUtils.isEmpty(str);
      }
  
      /**
       * 字符串转整数
       *
       * @param str
       * @param defValue
       * @return
       */
      public static int toInt(String str, int defValue) {
          try {
              return Integer.parseInt(str);
          } catch (Exception e) {
          }
          return defValue;
      }
  
      /**
       * byte[]数组转换为16进制的字符串
       *
       * @param data 要转换的字节数组
       * @return 转换后的结果
       */
      public static final String byteArrayToHexString(byte[] data) {
          StringBuilder sb = new StringBuilder(data.length * 2);
          for (byte b : data) {
              int v = b & 0xff;
              if (v < 16) {
                  sb.append('0');
              }
              sb.append(Integer.toHexString(v));
          }
          return sb.toString().toUpperCase(Locale.getDefault());
      }
  
      /**
       * 16进制表示的字符串转换为字节数组
       *
       * @param s 16进制表示的字符串
       * @return byte[] 字节数组
       */
      public static byte[] hexStringToByteArray(String s) {
          int len = s.length();
          byte[] d = new byte[len / 2];
          for (int i = 0; i < len; i += 2) {
              // 两位一组，表示一个字节,把这样表示的16进制字符串，还原成一个进制字节
              d[i / 2] = (byte) ((Character.digit(s.charAt(i), 16) << 4) + Character
                      .digit(s.charAt(i + 1), 16));
          }
          return d;
      }
  
      /**
       * 将给定的字符串中所有给定的关键字标红
       *
       * @param sourceString 给定的字符串
       * @param keyword      给定的关键字
       * @return 返回的是带Html标签的字符串，在使用时要通过Html.fromHtml()转换为Spanned对象再传递给TextView对象
       */
      public static String keywordMadeRed(String sourceString, String keyword) {
          String result = "";
          if (sourceString != null && !"".equals(sourceString.trim())) {
              if (keyword != null && !"".equals(keyword.trim())) {
                  result = sourceString.replaceAll(keyword,
                          "<font color=\"red\">" + keyword + "</font>");
              } else {
                  result = sourceString;
              }
          }
          return result;
      }
  
      /**
       * 为给定的字符串添加HTML红色标记，当使用Html.fromHtml()方式显示到TextView 的时候其将是红色的
       *
       * @param string 给定的字符串
       * @return
       */
      public static String addHtmlRedFlag(String string) {
          return "<font color=\"red\">" + string + "</font>";
      }
  
  }
  