字符串工具类

public final class Strings {

  private static final Pattern ALPHABET_NUMBER_PATTERN =
      Pattern.compile("^(?=.*[0-9])(?=.*[a-zA-Z])[0-9a-zA-Z]{8,16}$");

  private Strings() {
    // No instances.
  }

  public static boolean isBlank(CharSequence string) {
    return (null == string   || string.toString().trim().length() == 0);
  }

  public static String replaceBlank(String string) {
    if (string != null) {
      string.replaceAll("\\s", "");
    }
    return string;
  }

  public static boolean isEmpty(List list) {
    return list == null || list.size() <= 0;
  }

  public static double parseDouble(String string) {
    double result = 0;
    if (!Strings.isBlank(string)) {
      try {
        result = Double.parseDouble(string);
      } catch (NumberFormatException e) {
        e.printStackTrace();
        Timber.e(e, "String parser double error");
      }
    }
    return result;
  }

  public static float parseFloat(String string) {
    float result = 0;
    if (!Strings.isBlank(string)) {
      try {
        result = Float.parseFloat(string);
      } catch (NumberFormatException e) {
        e.printStackTrace();
        Timber.e(e, "String parser float error");
      }
    }
    return result;
  }

  public static int parseInt(String string) {
    int result = 0;
    if (!Strings.isBlank(string)) {
      try {
        result = Integer.parseInt(string);
      } catch (NumberFormatException e) {
        e.printStackTrace();
        Timber.e(e, "String parser integer error");
      }
    }
    return result;
  }

  public static long parseLong(String string) {
    long result = 0;
    if (!Strings.isBlank(string)) {
      try {
        result = Long.parseLong(string);
      } catch (NumberFormatException e) {
        e.printStackTrace();
        Timber.e(e, "String parser long error");
      }
    }
    return result;
  }

  /**
   * 精确计算两数之差
   *
   * @param arg1 总金额
   * @param arg2 首付金额
   * @return 贷款金额
   */
  public static double subtract(String arg1, String arg2) {
    double result = 0;
    if (isBlank(arg2)) {
      arg2 = "0";
    }
    if (!Strings.isBlank(arg1)) {
      BigDecimal decimal1 = new BigDecimal(arg1);
      BigDecimal decimal2 = new BigDecimal(arg2);
      result = decimal1.subtract(decimal2).doubleValue();
    }
    return result;
  }

  public static String inputStreamToString(InputStream is) throws IOException {
    ByteArrayOutputStream b = new ByteArrayOutputStream();
    int i;
    while ((i = is.read()) != -1) {
      b.write(i);
    }
    return b.toString();
  }

  /**
   * 空数据格式化
   *
   * @param args 需要格式化对象
   * @return 格式化后对象
   */
  public static String removeNull(@NonNull String args) {
    String notNull = "0";
    if (TextUtils.isEmpty(args) || "null".equalsIgnoreCase(args)) {
      return notNull;
    }
    return args;
  }

  /**
   * Filter out emoji.
   */
  public static InputFilter[] filterEmoji() {
    return new InputFilter[] {
        new InputFilter() {

          Pattern emoji = Pattern.compile(

              "[\ud83c\udc00-\ud83c\udfff]|[\ud83d\udc00-\ud83d\udfff]|[\u2600-\u27ff]",

              Pattern.UNICODE_CASE | Pattern.CASE_INSENSITIVE);

          @Override
          public CharSequence filter(CharSequence source, int start, int end, Spanned dest,
              int dstart,

              int dend) {

            Matcher emojiMatcher = emoji.matcher(source);

            if (emojiMatcher.find()) {

              return "";
            }
            return null;
          }
        }
    };
  }

  public static boolean isAllSame(String numOrStr) {
    numOrStr = numOrStr.trim();
    if (Strings.isBlank(numOrStr)) {
      return false;
    }
    int length = numOrStr.length();
    return !(length < 8 || length > 16) && !ALPHABET_NUMBER_PATTERN.matcher(numOrStr).matches();
  }

  public static String desensitization(String code) {
    StringBuilder builder = new StringBuilder();
    //char bankCode[] = code.toCharArray();
    //for (int i = 0; i < bankCode.length; i++) {
    //  if (i > 3 && i < 12) {
    //    builder.append("*");
    //  }
    //  if (i < 4 || i >= code.length() - 4) {
    //    builder.append(bankCode[i]);
    //  }
    //
    //  if ((i + 1) % 4 == 0 && i > 0) {
    //    Timber.e("这是i----"+i+"----"+bankCode[i]);
    //    builder.append(" ");
    //  }
    //}
    if (code.length() > 4) {
      builder.append(
          code.substring(0, 4) + " **** **** " + code.substring(code.length() - 4, code.length()));
    }
    return builder.toString();
  }

  public static String desensitizatIdenty(String identy) {
    return desensitizatIdenty(identy, true);
  }

  public static String desensitizatIdenty(String identy, boolean isIdentity) {
    StringBuilder builder = new StringBuilder();
    char idCode[] = identy.toCharArray();
    if (isIdentity) {//
      for (int i = 0; i < idCode.length; i++) {
        if (i > 2 && i < idCode.length - 2) {
          builder.append("*");
        } else {
          builder.append(idCode[i]);
        }
      }
    } else {//证件编号
      if (idCode.length>5){
        for (int i = 0; i < idCode.length; i++) {
          if (i > 2 && i < idCode.length - 2) {
            builder.append("*");
          } else {
            builder.append(idCode[i]);
          }
        }
      }else {

      }

    }
    return builder.toString();
  }

  public static String desensitizatPhone(String identy) {
    if (isBlank(identy)) {
      return "";
    }
    StringBuilder builder = new StringBuilder();
    char idCode[] = identy.toCharArray();
    for (int i = 0; i < idCode.length; i++) {
      if (i > 2 && i < idCode.length - 4) {
        builder.append("*");
      } else {
        builder.append(idCode[i]);
      }
    }
    return builder.toString();
  }
  //public static String desensitizatIdenty(String identy) {
  //  StringBuilder builder = new StringBuilder();
  //  char idCode[] = identy.toCharArray();
  //  for (int i = 0; i < idCode.length; i++) {
  //    if (i > idCode.length - 9 && i < idCode.length - 2) {
  //      builder.append("*");
  //    } else {
  //      builder.append(idCode[i]);
  //    }
  //  }
  //  return builder.toString();
  //}

  public static String desensitizatName(String name) {
    if (StringUtil.isNullOrEmpty(name)){
      return "*";
    }
    StringBuilder builder = new StringBuilder();
    char[] nameCode = name.toCharArray();
    for (int i = 0; i < nameCode.length; i++) {
      if (i == 0) {
        builder.append(nameCode[i]);
      } else {
        builder.append("*");
      }
    }
    return builder.toString();
  }

  /**
   * 格式化钱数,每三位以逗号隔开
   */
  public static String NumberJionComma(int number) {
    StringBuffer sb = new StringBuffer(String.valueOf(number));
    for (int i = sb.length() - 3; i > 0; i = i - 3) {
      sb.insert(i, ",");
    }
    return sb.toString();
  }

  /**
   * 格式化钱数,每三位以逗号隔开
   */
  public static String NumberJionComma(double number) {
    StringBuffer sb = new StringBuffer(String.valueOf(number));
    for (int i = sb.length() - 3; i > 0; i = i - 3) {
      sb.insert(i, ",");
    }
    return sb.toString();
  }

  /**
   * 格式化钱数,每三位以逗号隔开
   */
  public static String NumberJionComma(long number) {
    StringBuffer sb = new StringBuffer(String.valueOf(number));
    for (int i = sb.length() - 3; i > 0; i = i - 3) {
      sb.insert(i, ",");
    }
    return sb.toString();
  }

  /**
   * 格式化钱数,每三位以逗号隔开
   */
  public static String NumberJionComma(String number) {
    StringBuffer sb = new StringBuffer(number);
    int location = sb.length() - 3;
    if (number.contains(".")) {
      location = sb.length() - 6;
    }
    for (int i = location; i > 0; i = i - 3) {
      sb.insert(i, ",");
    }
    return sb.toString();
  }

  /**
   * 统计逗号数量
   */
  public static int getCommaCount(String str, String key) {
    int count = 0;
    int index = 0;
    while ((index = str.indexOf(key, index)) != -1) {
      index = index + key.length();

      count++;
    }
    return count;
  }

  private static String nums[] = { "零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖" };

  private static String pos_units[] = { "", "拾", "佰", "仟" };

  private static String weight_units[] = { "", "万", "亿" };

  /**
   * 将整数转换成汉字数字
   *
   * @param num 需要转换的数字
   * @return 转换后的汉字
   */
  public static String formatIntegerMoney(long num) {
    if (num == 0) {
      return "零";
    }

    int weigth = 0;//节权位
    String chinese = "";
    String chinese_section = "";
    boolean setZero = false;//下一小节是否需要零,第一次没有上一小节所以为false
    while (num > 0) {
      long section = num % 10000;//得到最后面的小节
      if (setZero) {//判断上一小节的千位是否为零,是就设置零
        chinese = nums[0] + chinese;
      }
      chinese_section = sectionTrans(section);
      if (section != 0) {//判断是都加节权位
        chinese_section = chinese_section + weight_units[weigth];
      }
      chinese = chinese_section + chinese;
      chinese_section = "";

      setZero = (section < 1000) && (section > 0);
      num = num / 10000;
      weigth++;
    }
    if ((chinese.length() == 2 || (chinese.length() == 3)) && chinese.contains("一十")) {
      chinese = chinese.substring(1, chinese.length());
    }
    if (chinese.indexOf("一十") == 0) {
      chinese = chinese.replaceFirst("一十", "十");
    }

    return chinese;
  }

  /**
   * 将每段数字转汉子
   */
  public static String sectionTrans(long section) {
    StringBuilder section_chinese = new StringBuilder();
    int pos = 0;//小节内部权位的计数器
    boolean zero = true;//小节内部的置零判断,每一个小节只能有一个零。
    while (section > 0) {
      long v = section % 10;//得到最后一个数
      if (v == 0) {
        if (!zero) {
          zero = true;//需要补零的操作,确保对连续多个零只是输出一个
          section_chinese.insert(0, nums[0]);
        }
      } else {
        zero = false;//有非零数字就把置零打开
        section_chinese.insert(0, pos_units[pos]);
        section_chinese.insert(0, nums[(int) v]);
      }
      pos++;
      section = section / 10;
    }

    return section_chinese.toString();
  }

  public static String traslateVersion(String version) {
    StringBuilder builder = new StringBuilder();
    for (int i = 0; i < version.length(); i++) {
      builder.append(version.charAt(i));
      if (i != version.length() - 1) {
        builder.append(".");
      }
    }
    return builder.toString();
  }

  public static String getIdentyType(int code) {
    String type = "身份证";
    switch (code) {
      case 0:
        type = "身份证";
        break;
      case 1:
        type = "中国护照";
        break;
      case 2:
        type = "军官证";
        break;
      case 3:
        type = "士兵证";
        break;
      case 4:
        type = "港澳居民来往内地通行证";
        break;
      case 5:
        type = "户口本";
        break;
      case 6:
        type = "外国护照";
        break;
      case 7:
        type = "其他";
        break;
      case 8:
        type = "文职证";
        break;
      case 9:
        type = "警官证";
        break;
      case 10:
        type = "台胞证";
        break;
      case 11:
        type = "外国人永久居留证";
        break;
      case 12:
        type = "身份证";
        break;
    }
    return type;
  }

  public static String rateTrafer(Activity activity, int yieldRateShow, String yieldRateShowDesc,
      String expectedRateFloor, String expectedRateUpper) {
    String rate = "";
    if (yieldRateShow == 0) {
      rate = Phrase.from(activity.getString(R.string.product_rate_main))
          .put("rate_min", expectedRateFloor)
          .put("rate_max", expectedRateUpper)
          .format()
          .toString();
    } else {
      rate = yieldRateShowDesc;
    }
    return rate;
  }

  public static String categoryTrafer(int productCategory, int yieldRateShow) {
    String category = "";
    if (yieldRateShow == 0) {
      switch (productCategory){
        case 0:
          category = "业绩比较基准";
          break;
        case 1:
          category = "7日年化收益率";
          break;
          default:
            category = "";
            break;
      }
      //category = productCategory == 0 ? "业绩比较基准" : "7日年化收益率";
    } else {
      category = "年化收益率";
    }

    return category;
  }

  public static void   getboldText(TextView textView , Context context ){
    Typeface typeface = Typeface.createFromAsset(context.getAssets(), "DINAlternateBold.ttf");
    textView.setTypeface(typeface);
  }
  //格式化小输点后两位
  public static String formatMoney(String money){
    BigDecimal decimal = new BigDecimal(money);
    BigDecimal setScale = decimal.setScale(2,BigDecimal.ROUND_HALF_UP);
    return setScale.toString();
  }

  public static double removeDouhao(String money){
    double d1 = 0;//这里使用的是parse,不是format
    try {
      d1 = new DecimalFormat().parse(money).doubleValue();
    } catch (ParseException e) {
      e.printStackTrace();
    }

    return d1;
  }
  public static String formatString(String data) {
    if(Strings.isBlank(data)){
      return "";
    }
    if (data.contains(",")){
      return data;
    }
    double dataf=Double.parseDouble(data);
    DecimalFormat df;
    if(data.equals("0")||data.equals("0.0")||data.equals("0.00")){
       df = new DecimalFormat("0.00");
    }else {
       df = new DecimalFormat("#,##0.00");
    }

    return df.format(dataf);
  }
  public static String formatString(int data) {
    String valueOf = String.valueOf(data);
    float dataf=Float.parseFloat(valueOf);
    DecimalFormat df;
    if(valueOf.equals("0")){
      df = new DecimalFormat("0.00");
    }else {
      df = new DecimalFormat("#,###.00");
    }

    return df.format(dataf);
  }
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值