美文网首页Android开发知识小集
Android 标红字符串中所有的数字

Android 标红字符串中所有的数字

作者: CyanStone | 来源:发表于2018-07-06 17:24 被阅读98次
  /**
   * 数字标红,见到数字就标红
   *
   * @return
   */
  private SpannableString markNumber(String str) {
    if (!Tools.isEmpty(str)) {
      SpannableString spannableString = new SpannableString(str);
      for (int i = 0; i < str.length(); i++) {
        int start = str.length() - 1;
        int end = 0;
        if (isNumberChar(str.charAt(i))) {
          start = i;
          for (int j = i + 1; j < str.length(); j++) {
            if (isNumberChar(str.charAt(j))) {
              continue;
            } else {
              end = j - 1;
              i = j;
              break;
            }
          }
          if (start <= end) {
            //注意这里不要使用以下方式,否则只会把最后一个数字的颜色改变
            // ForegroundColorSpan colorSpan = new ForegroundColorSpan(Color.parseColor(ORANGE_COLOR));
            // spannableString.setSpan(colorSpan, start, end + 1,Spanned.SPAN_INCLUSIVE_INCLUSIVE);
            spannableString.setSpan(new ForegroundColorSpan(Color.parseColor(ORANGE_COLOR)), start, end + 1,
                Spanned.SPAN_INCLUSIVE_INCLUSIVE);
          }
        }
      }
      return spannableString;
    } else {
      return new SpannableString("");
    }
  }

**
   * 判断字符是否是数字
   *
   * @param c
   * @return
   */
  private boolean isNumberChar(char c) {
    return c >= 48 && c <= 57;
  }

注意:在调用setSpan的时候,一个Span只会被使用一次,同时使用一个span,只会显示最后一次设置的效果,所以,这里new了一个新的Span,而不是复用一个。

相关文章

  • Android 标红字符串中所有的数字

    注意:在调用setSpan的时候,一个Span只会被使用一次,同时使用一个span,只会显示最后一次设置的效果,所...

  • 记录1 var关键字的意义、undefined与null、对变量

    JavaScript中所有的数据类型----数字类型、字符串类型、布尔类型。特殊值null和undefined。 ...

  • js 匹配URL的正则表达式

    待匹配的字符串 获取字符串中所有 a 标签的 href 的值及其中间的文本内容 输出结果: 匹配所有的 img 标...

  • 2018-09-14 day20-内存管理机制

    python中变量的赋值 python中所有的数据都是对象,所有的变量都是对象的引用 python对数字、字符串(...

  • 一个用 BOOL 的巧用?

    传入一段字符串,找出字符串中所有的整型数字,将数字子串提取出来,按所示数字大小,由小到大放到一个数组里。比如: 传...

  • 内存管理机制

    1.python中变量的赋值 python中所有的数据都是对象,所有的变量都是对象的引用python对数字,字符串...

  • 2018-09-15 day20-内存管理

    1.python中变量的赋值 python中所有的数据都是对象,所有的变量都是对象的引用python对数字,字符串...

  • 面向对象(十一)Object 对象补充

    Object对象补充 01 可以直接使用Object对象创建字符串对象|数字对象|布尔值对象02 js中所有的内置...

  • Android 角标控制

    Android实现应用数字角标https://juejin.cn/post/7003536061695524877...

  • Javascript 对象

    一,对象是什么 1.指行动或思考时作为目标的事物。在Javascript中所有的事物都是对象:字符串、数组、数字、...

网友评论

  • 有点健忘:最近在学正则表达式,就练习下,感觉比较省事,建议简单学习
    val sp = SpannableString(str)
    val matcher = Pattern.compile("\\d+").matcher(str)
    while (matcher.find()) {
    sp.setSpan(ForegroundColorSpan(Color.BLUE), matcher.start(), matcher.end(), SpannableString.SPAN_INCLUSIVE_EXCLUSIVE)
    }
    tv_number.setText(sp):smile:

本文标题:Android 标红字符串中所有的数字

本文链接:https://www.haomeiwen.com/subject/vnsbuftx.html