SpannableStringBuilder 用正则表达式替换内容

2024-01-01

我有以下代码,我将在其中标记大括号之间的内容SpannableString并删除花括号,但它给出了错误的结果。

String text = "the {quic}k brown {fox} jumps {over} the lazy dog. {A Quick} {brow}nfoxjumpsoverthelazydog";

tv.setText(makeSpannable(text, "\\{.*?\\}"));
public SpannableStringBuilder makeSpannable(String text, String regex) {
    SpannableStringBuilder spannable = new SpannableStringBuilder(text);
    Pattern pattern = Pattern.compile(regex);
    Matcher matcher = pattern.matcher(spannable.toString());
    while (matcher.find()) {
        String word = matcher.group();
        String abbr = word.toString().substring(1, word.length() - 1);
        spannable.setSpan(new ForegroundColorSpan(Color.RED), matcher.start(), matcher.end(),  Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
        spannable.replace(matcher.start(), matcher.start() + abbr.length() , abbr);
    }
    return spannable;
}

Input:

the {quic}k brown {fox} jumps {over} the lazy dog. {A Quick} {brow}nfoxjumpsoverthelazydog

Output: enter image description here


String text = "the {quic}k brown {fox} jumps {over} the lazy dog. {A Quick} {brow}nfoxjumpsoverthelazydog";

tv.setText(makeSpannable(text, "\\{.*?\\}"));

public SpannableStringBuilder makeSpannable(String text, String regex) {

    StringBuffer sb = new StringBuffer();
    SpannableStringBuilder spannable = new SpannableStringBuilder();

    Pattern pattern = Pattern.compile(regex);
    Matcher matcher = pattern.matcher(text);
    while (matcher.find()) {
        sb.setLength(0); // clear
        String group = matcher.group();
        // caution, this code assumes your regex has single char delimiters
        String spanText = group.substring(1, group.length() - 1);
        matcher.appendReplacement(sb, spanText);

        spannable.append(sb.toString());
        int start = spannable.length() - spanText.length();

        spannable.setSpan(new ForegroundColorSpan(Color.RED), start, spannable.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
    }
    sb.setLength(0);
    matcher.appendTail(sb);
    spannable.append(sb.toString());
    return spannable;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SpannableStringBuilder 用正则表达式替换内容 的相关文章

  • @EnableTransactionManagement 的范围是什么?

    我试图了解正确的放置位置 EnableTransactionManagement多个 JavaConfig 上下文的情况下的注释 考虑以下场景 我在 JPAConfig java 和 AppConfig java 中有 JPA 配置以及一组
  • 尝试在没有 GatewayIntent 的情况下访问消息内容

    我希望每当我写一条打招呼的消息时 机器人都会在控制台中响应一条消息 但它只是给我一个错误 JDA MainWS ReadThread WARN JDA Attempting to access message content without
  • 如何在java中使jpeg无损?

    有没有人可以告诉我如何使用编写 jpeg 文件losslessjava中的压缩 我使用下面的代码读取字节来编辑字节 WritableRaster raster image getRaster DataBufferByte buffer Da
  • 版本 5 上带有 getBackground().setAlpha 的按钮 - 棒棒糖无法正常工作

    我有这段代码 适用于自 API 14 以来的每个版本 但在 Android 5 0 Lollipop 上无法正常工作 以下是我希望按钮出现的方式 单击按钮1 buttonArrivals getBackground setAlpha 180
  • 具有多种值类型的 Java 枚举

    基本上我所做的是为国家编写一个枚举 我希望不仅能够像国家一样访问它们 而且还能够访问它们的缩写以及它们是否是原始殖民地 public enum States MASSACHUSETTS Massachusetts MA true MICHI
  • 打印包含 JBIG2 图像的 PDF

    请推荐一些库 帮助我打印包含 JBIG2 编码图像的 PDF 文件 PDFRenderer PDFBox别帮我 这些库可以打印简单的 PDF 但不能打印包含 JBIG2 图像的 PDF PDFRenderer尝试修复它 根据 PDFRedn
  • 手动启用时 Firebase Crashlytics 不报告崩溃

    Crashlytics 在没有选择加入报告的情况下也能正常工作 但一旦我根据规定设置了选择加入报告 它就会停止报告任何内容tutorial https firebase google com docs crashlytics customi
  • 从 Java 日历迁移到 Joda 日期时间

    以前 当我第一次设计股票应用相关软件时 我决定使用java util Date表示股票的日期 时间信息 后来我体会到了大部分方法java util Date已弃用 因此 很快 我重构了所有代码以利用java util Calendar 然而
  • 点击监听器的公共类

    我的所有 6 项活动中有 7 个按钮 所有 6 个按钮在所有活动中都具有相同的功能 如何为这 6 个按钮执行通用的单击事件侦听器 您可以创建一个实现 View OnClickListener 的新类 如下所示 public class My
  • 在 AKKA 中,对主管调用 shutdown 是否会停止其监督的所有参与者?

    假设我有一位主管连接了 2 位演员 当我的应用程序关闭时 我想优雅地关闭这些参与者 调用supervisor shutdown 是否会停止所有参与者 还是我仍然需要手动停止我的参与者 gracias 阻止主管 https github co
  • 将 RSA 密钥从 BigIntegers 转换为SubjectPublicKeyInfo 形式

    WARNING 最初的问题是关于 PKCS 1 编码密钥 而问题中的实际示例需要SubjectPublicKeyInfo X 509 编码密钥 我目前正致力于在 java 中从头开始实现 RSA 算法 特别是密钥生成方面 现在我的代码可以给
  • ExceptionHandler 不适用于 Throwable

    我们的应用程序是基于 Spring MVC 的 REST 应用程序 我正在尝试使用 ExceptionHandler 注释来处理所有错误和异常 I have ExceptionHandler Throwable class public R
  • 使用 Java 从 S3 上的文件在 S3 上创建 zip 文件

    我在 S3 上有很多文件 需要对其进行压缩 然后通过 S3 提供压缩文件 目前 我将它们从流压缩到本地文件 然后再次上传该文件 这会占用大量磁盘空间 因为每个文件大约有 3 10MB 而且我必须压缩多达 100 000 个文件 所以一个 z
  • Google Android Drive api 在已安装版本上登录失败

    我开发了一个使用 GoogleDrive api 的 Android 应用程序 当处于调试状态或运行调试版本时 应用程序 工作正常 并正确验证附加的谷歌帐户 等 当我构建发行版本时 使用我的签名密钥 并且 安装apk文件 当我运行时 Goo
  • Spock模拟inputStream导致无限循环

    我有一个代码 gridFSFile inputStream bytes 当我尝试这样测试时 given def inputStream Mock InputStream def gridFSDBFile Mock GridFSDBFile
  • WebView 在某些设备上如果不长按则不会滚动

    我有一个 WebView 设置如下 the web view mWebView WebView findViewById R id webView push the url on to the web view mWebView loadU
  • Spring Boot MSSQL Kerberos 身份验证

    目前在我的春季靴子中application properties文件中 我指定以下行来连接到 MSSql 服务器 spring datasource url jdbc sqlserver localhost databaseName spr
  • Java中有类似分支/跳转表的东西吗?

    Java有类似分支表或跳转表的东西吗 分支表或跳转表是 根据维基百科 http en wikipedia org wiki Branch table 用于描述使用分支指令表将程序控制 分支 转移到程序的另一部分 或可能已动态加载的不同程序
  • Android:获取最新意图

    如何获取发送到活动的最后一个意图 的文档onNewIntent 建议我需要做这样的事情 class MyActivity public void onNewIntent Intent intent setIntent intent reac
  • 使用 eclipse IDE 配置 angularjs

    我想开始使用 AngularJs 和 Java Spring 进行开发 我使用 Eclipse 作为 IDE 我想配置我的 Eclipse 以使这些框架无缝工作 我知道我可能要求太多 但相信我 我已经做了很多研究 你们是我最后的选择 任何帮

随机推荐

  • 如何将R代码转换为字符串?

    我想转型c 1 2 text 转换为只有一个元素的字符向量c 1 2 text 我已经尝试过这个 gt quote c 1 2 text c 1 2 text but gt class quote c 1 2 text 1 call 和这个
  • 如何在启用调试的 Android 6.0 设备上更轻松地切换 MTP?

    在安卓6 0中 MTP 不再自动工作 http developer android com about versions marshmallow android 6 0 changes html behavior usb 通过 USB 端口
  • 如何获得isolatedStorage中所有文件的平面列表?

    我需要获取给定isolatedStorage文件夹中所有文件的列表 isolatedStorage 的根目录下有一些子文件夹 这些子文件夹需要包含在列表中 通常的 System IO 类不能与isolatedStorage 一起使用 这是我
  • Keras 预测不会返回 celery 任务

    以下 Keras 函数 预测 在同步调用时有效 pred model predict x 但当从异步任务队列 Celery 中调用时它不起作用 Keras 预测函数在异步调用时不会返回任何输出 堆栈是 Django Celery Redis
  • AngularJS 承诺返回空对象

    基本上我想做的是从解析承诺的函数调用中分配一些模型值 像这样 value someFun 这是我调用此函数的服务 app factory SomeService function q return someFun function var
  • pandas 系列的循环移位

    我正在对 pandas 中的数据系列使用移位方法 文档 http pandas pydata org pandas docs stable generated pandas Series shift html 是否可以一步进行循环移位 即第
  • 如何使用Delphi2007运行非提升的进程

    我有一个类似安装程序的应用程序 我必须在 Vista 上以提升的身份运行它 但从那里我必须开始一个非提升的新流程 有什么提示如何使用 Delphi2007 做到这一点吗 我找到了一个C 的优秀示例 http www codeproject
  • 如何更改 Visual Studio Code 中的解释器?

    我在我的系统上安装了几个 Python 解释器 2 x 和 3 x 版本 我正在尝试准备我的工作环境 以便可以在用两个 Python 版本编写的代码之间轻松切换 在 Visual Studio Code VSC 中拥有尽可能灵活的设置非常重
  • 如何更改 Font Awesome 5 中图标的颜色?

    我无法使用这些代码为 Font Awesome 5 图标着色 我试过fillcss 属性用于设置颜色 但它不起作用 HTML 代码 div class container mt200 icons div class col md 3 div
  • SQL Server 中的函数与存储过程

    在 SQL 中什么时候应该使用函数而不是存储过程 反之亦然 每个的目的是什么 函数是计算值 不能执行永久的环境更改SQL Server 即 没有INSERT or UPDATE允许声明 函数可以内联使用SQL如果它返回标量值 则可以使用语句
  • Google Play 游戏应用中未显示成就

    我们根据官方谷歌开发文档为我们的 Android 游戏实现了 Google Play 成就 但似乎有些不对劲 因为我们注意到 Google Play 游戏应用程序中存在以下奇怪的行为 成就不会显示在 Google Play 游戏应用中 在
  • 计算三个加密数字的平均值

    是否可以计算三个加密整数的平均值 对加密方法没有限制 这样做的目的只是隐藏三个数字并求平均值 你似乎正在寻找的东西叫做同态加密 http en wikipedia org wiki Homomorphic encryption 一种加密方案
  • LibGDX FreeType 字体模糊

    我正在使用屏幕高度百分比和设置百分比动态生成字体 显然将来会乘以密度 一些笔记 我正在读取 OTF 文件 使用最新版本的LibGDX 版本1 2 0 我有以下问题 字体有很大的断裂 看起来很模糊 但仅限于medium Large and s
  • 如何在android中滚动tableview

    我有一个要滚动的表格视图 因为数据未显示完整
  • ggplot2 轴标签分组

    我正在尝试使用 ggplot2 构建一个图 在 X 轴上我可以找到某种为变量组添加标签的方法 这是我的代码的最小版本 Bzero lt 100 matrix runif 100 ncol 10 nrow 10 B lt 99 LNtype
  • 横向压平两列,雪花中不重复

    我有一个查询 该查询按两个变量进行分组以获得另一个变量的总数 为了维护我的表结构以供以后计算 我列出了另外两个变量以保存查询的下一阶段 但是 当我尝试稍后对 listagg 列进行两次展平时 我的数据会重复多次 示例 my table id
  • PyQt |信号不在 QThread 中处理,而是在主线程中处理

    在这个简单的 PyQt 演示程序中 我从主线程发出信号 在工作线程中 我连接到它们 但信号处理程序在主线程中运行 from PyQt4 import QtGui QtCore import threading from time impor
  • 使用没有 Surface View 的 Android 相机

    我正在android上开发 我想用相机做一些事情 处理像素的值 但只是在后台 是否可以在没有表面视图的情况下做到这一点 只需使用缓冲区读取像素值并进行处理 感谢每一位可以帮助我的人 从 API 级别 11 开始表面纹理 http devel
  • 哪些 GCC 优化标志和技术在 CPU 上是安全的?

    当编译 链接适用于 ISA 例如 x86 64 的所有实现的 C C 库或程序时 从正确性和运行时性能的角度来看 哪些优化标志是安全的 我希望优化能够产生正确的结果 并且不会对特定 CPU 的性能造成损害 例如 我希望避免优化标志 这些优化
  • SpannableStringBuilder 用正则表达式替换内容

    我有以下代码 我将在其中标记大括号之间的内容SpannableString并删除花括号 但它给出了错误的结果 String text the quic k brown fox jumps over the lazy dog A Quick