首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何搜索字符串中的单词并在android中的文本视图中突出显示单词?

答案

为了在 Android 的文本视图中突出显示字符串中的单词,您可以使用以下步骤:

  1. 首先,在您的 Android 项目中添加一个文本视图。您可以使用 android.text.TextWatcher 监听器来处理文本更改并突出显示单词。
  2. TextWatcher 实现中,您可以使用 android.text.SpannableStringBuilder 类来构建要突出显示的单词的字符串。
  3. 然后,您可以使用 android.text.style.TextAppearanceSpan 类来设置突出显示样式。
  4. 最后,您可以使用 android.text.TextUtils 类来查找字符串中的单词,并使用 SpannableStringBuilder 将它们突出显示。

以下是一个示例代码片段:

代码语言:java
复制
import android.text.TextWatcher;
import android.text.SpannableStringBuilder;
import android.text.style.TextAppearanceSpan;
import android.text.TextUtils;

public class MyTextWatcher implements TextWatcher {
    private SpannableStringBuilder mStringBuilder;

    public MyTextWatcher(String text) {
        mStringBuilder = new SpannableStringBuilder(text);
    }

    @Override
    public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
    }

    @Override
    public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
    }

    @Override
    public void afterTextChanged(Editable editable) {
        String text = editable.toString();
        if (text.isEmpty()) {
            return;
        }

        int start = mStringBuilder.length();
        int end = start + text.length();

        for (int i = start; i < end; i++) {
            char c = text.charAt(i);
            if (c == ' ') {
                mStringBuilder.append("\n");
            } else if (c == '(' || c == '[' || c == '{') {
                // Add a space before the parenthesis
                mStringBuilder.insert(i, " ");
                i++;
            }
        }

        int index = mStringBuilder.length();

        // Add a space before the last word
        if (text.charAt(end - 1) == ' ') {
            mStringBuilder.append("\n");
        } else {
            mStringBuilder.append(" ");
        }

        // Highlight the last word
        TextAppearanceSpan highlightSpan = new TextAppearanceSpan(null, 0, index, TypedValue.COMPLETED_VALUE);
        mStringBuilder.setSpan(highlightSpan, index, index + text.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
    }
}

在上面的代码中,我们创建了一个 MyTextWatcher 类,它实现了 TextWatcher 接口。我们使用 SpannableStringBuilder 来构建要突出显示的单词的字符串。在 afterTextChanged 方法中,我们查找字符串中的最后一个单词,并使用 TextAppearanceSpan 类来设置突出显示样式。

TextWatcher 的实现中,我们使用 beforeTextChangedonTextChanged 方法来处理文本更改之前和之后的文本视图。在 onTextChanged 方法中,我们使用 afterTextChanged 方法来突出显示字符串中的最后一个单词。

MyTextWatcher 类的实例化过程中,我们传递要突出显示的文本字符串。然后,在 afterTextChanged 方法中,我们查找字符串中的最后一个单词,并使用 TextAppearanceSpan 类来设置突出显示样式。

afterTextChanged 方法中,我们使用 TextUtils.getWordIterator 方法来查找字符串中的最后一个单词。然后,我们使用 TextAppearanceSpan.Factory 来创建一个 TextAppearanceSpan 对象,并将其设置到 SpannableStringBuilder 中。

最后,在 onTextChanged 方法中,我们使用 afterTextChanged 方法来突出显示字符串中的最后一个单词。

请注意,这只是一个示例代码片段,您需要根据您的具体需求进行修改和扩展。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • 如何又快又好地搜索代码?Facebook 提出基于机器学习新工具!

    我们模型可以准确回答这个数据集中问题,例如: 如何关闭/隐藏 Android 软键盘? 如何Android 把位图转换成可绘制如何删除整个文件夹和内容?...如何处理活动后退按钮? NCS 表现显示,相对简单方法在源代码领域可以表现良好。UNIF 表现显示,当有标记数据可用时,一个简单有监督学习方法可以带来显著额外收益。...,我们将源代码视为文本,并从以下语法类别中提取:方法名、方法调用、枚举、字符串文本和注释。...它目标是突出文档中最具代表性单词——如果一个单词经常出现在文档,它权重就会更高,但是如果它出现在语料库过多文档里,它也会受到惩罚。...下表显示,相比 NCS,UNIF 显著提高了回答问题数量。 ? 这突出表明,如果能够访问理想训练语料库,监督技术可以提供令人印象深刻搜索性能。例如,使用搜索查询「如何退出应用程序并显示主屏幕?」

    1.5K20

    用自然语言从GitHub搜代码,跳过论坛提问环节,来自Facebook新研究

    晓查 发自 凹非寺 量子位 报道 | 公众号 QbitAI “如何关闭或隐藏Android软键盘?”...为此,Facebook开发了一种代码搜索工具,可将自然语言处理(NLP)和信息检索(IR)技术直接应用于源代码文本。...例如,搜索查询“如何退出应用程序并显示主屏幕”这个问题,NCS返回: public void showHomeScreenDialog(View view) { Intent nextScreen =...要生成模型,NCS必须提取单词,构建单词嵌入,然后构建文档嵌入。 ? 为了生成表示代码向量,Facebook将源代码视为文本,并从以下语法类别中提取:方法名称,方法调用,枚举,字符串文字和注释。...例如,对于上图中方法体“pxToDp”,可以将源代码视为单词集合:“将dp pxpx转换为dp获取资源、获取显示指标”。 fastText为词汇语料库所有单词构建单词嵌入。

    69960

    开始使用-编写你第一个Flutter应用程序 顶

    然后它将呈现灰色导入字符串,让您知道导入库尚未使用(到目前为止)。 4.使用英文单词包来生成文本,而不是使用字符串“Hello World”。...提示:“Pascal case”(也称为“上骆驼案例”)意味着字符串每个单词(包括第一个单词)都以大写字母开头。 所以,“uppercamelcase”变成“UpperCamelCase”。...首先,通过添加突出显示文本创建一个最小类: class RandomWordsState extends State { } 3.在添加状态类后,IDE会抱怨该类缺少构建方法...将构建方法添加到RandomWordState,如突出显示文本所示: class RandomWordsState extends State { @override...lib/main.dart 第6步:导航到新屏幕 在这一步,您将添加一个显示收藏夹新屏幕(在Flutter称为路由)。 您将学习如何在主路由和新路由之间导航。

    9.5K20

    Emacs 快捷键

    B3 这一命令会设置并突出显示区域,然后无需删除就将其放在 kill 缓冲区。如果某个区域已经被突出显示并设置,该区域末尾将移动到您单击位置。 B3-B3 这个命令将突出显示区域,然后删除它。...Emacs 搜索和替换命令 绑定 命令或者函数 描述 C-s [字符串 ] [C-w ] [C-y ] isearch-forward 前向增量地在整个缓冲区搜索字符串(在缺省情况下,将搜索您上一次给出搜索字符串...C-r [字符串 ] [C-w ] [C-y ] isearch-backward 后向增量地在整个缓冲区搜索字符串 (在缺省情况下,将搜索您上一次给出搜索字符串,如果存在),C-w 使用从光标处到光标所在单词词尾之间文本...C-s Enter C-w 单词或者短语 word-search-forward 在整个缓冲区前向搜索给定单词或者短语(不管它们之间如何分隔)。...C-r Enter C-w 单词或者短语 word-search-backward 在整个缓冲区后向搜索给定单词或者短语(不管它们之间如何分隔)。

    2K20

    从头开始构建图像搜索服务

    根据我们多年语义理解项目的技术经验,希望编写一个教程,介绍如何构建自己特征表示,包括图像和文本数据,以及如何有效地进行相似性搜索。...那么,如何实际使用深度学习表示来创建搜索引擎呢?我们最终目标是拥有一个搜索引擎,可以接收图像并输出相似的图像或标签,还能接收文本并输出类似的单词或图像。...文本 此外,加载已在Wikipedia上预训练单词嵌入(本文使用GloVe模型单词嵌入),使用这些向量将文本合并到语义搜索。...我们将使用预先训练模型倒数第二层前网络结构,并存储对应权重值。在下图中,用绿色突出显示表示嵌入层,该嵌入层位于最终分类层之前。...例如,在下图中,使用Siamese cat类权重来重新权衡数据集上激活(用绿色突出显示)。

    79430

    掌握 Python RegEx:深入探讨模式匹配

    正则表达式通常缩写为 regex,是处理文本有效工具。本质上,它们由一系列建立搜索模式字符组成。该模式可用于广泛字符串操作,包括匹配模式、替换文本和分割字符串。...搜索和替换:正则表达式擅长识别符合特定模式字符串并用替代项替换它们。此功能在文本编辑器、数据库和编码尤其有价值。 语法突出显示:许多文本编辑器使用正则表达式来进行语法突出显示。...这里我们将检查字符串文本是否以单词“Python”开头。然后我们将结果打印到控制台。...在下面的代码,我们使用 re.search() 函数在字符串文本任意位置搜索单词“amazing”。如果找到该单词,我们将其打印出来;否则,我们打印“未找到匹配项”。...输出 输出显示我们可以成功地将文本“Python”替换为“Java”。

    21020

    Android Smart Linkify 支持机器学习

    这些模型 C ++ 推理库在此处作为 Android 开源框架一部分提供,并在每个文本选择和 Smart Linkify API calls 上运行。...对于给定文本字符串,第一个网络为非实体对象分配低分,为正确选择了整个电话号码候选单词分配高分 接下来,将重叠生成对象删除,促成较高得分者与较低得分者来一决高下。...我们可以轻松地在屏幕上显示文本为它们加上下划线,并在点击时运行正确应用程序。 文字特征 目前为止,我们已经对 Smart Linkify 在一串文本定位和分类实体对象方式进行了综述。...在这里,我们还将详细介绍如何处理文本并将其提供给网络。 假设在输入文本实体对象候选者,网络任务是确定该实体对象是否有效,然后对其进行分类。...为此,网络需要知道实体对象周围上下文(除了实体本身文本字符串)。 在机器学习,通过将这些部分表现为独立特征来完成。 实际上,输入文本被分成若干部分,分别馈送到网络: ?

    97530

    ElasticSearch系列05:倒排序索引与分词Analysis

    - 单词在文档中出现次数,用于相关性评分 》位置(Position)- 单词在文档中分词位置,用于phrase query 》偏移(Offset)- 记录单词开始结束位置,实现高亮显示...》偏移(Offset)- 记录单词开始结束位置,实现高亮显示 举个简单例子,理解下“倒排索引项”:以 Token“学习”为例: ?...三、Analysis 进行分词 Analysis:即文本分析,是把全文本转化为一系列单词(term/token)过程,也叫分词;在Elasticsearch 可通过内置分词器实现分词,也可以按需定制分词器...他们任务是在分词前整理字符串。一个字符过滤器可以用来去掉HTML,或者将 & 转化成 and。 2)分词器 tokenizer 其次,字符串被 分词器 分为单个词条。...,分析器不仅将搜索词转换为Token,而且还记录 每个Token顺序或相对位置(用于短语查询或单词接近性查询),以及每个Token开始和结束字符偏移量原始文字字词(用于突出显示搜索摘要)。

    1K40

    6个实例,8段代码,详解Pythonfor循环

    你可以通过在print语句后面添加逗号“,”将输出限制在同一行显示(如果指定打印字符很多,则会“换行”),代码如下所示: 当你希望通过一行而不是多行显示文本内容时,可以使用上述形式代码。...当循环执行结束,清单1 打印出数值单词和,并在后面显示非数值单词。它输出如下所示: 02 指数运算 清单2 Nth_exponet.py说明了如何计算一组整数幂。...使用split()函数做单词比较 清单4 Compare2.py说明了如何通过split()函数将文本字符串每个单词与另一个单词进行比较。...使用split()函数比较文本字符串 清单7 CompareStrings1.py说明了如何判断一个文本字符串单词是否出现在另一个文本字符串。...清单7 输出如下所示: 05 用基础for循环显示字符串字符 清单8 StringChars1.py说明了如何打印一个文本字符串字符。

    2K20

    LinuxGrep命令使用实例

    您可以使用它在文件搜索某个单词单词组合,也可以将其他Linux命令输出通过管道传输到grep,因此grep可以仅显示您需要查看输出。...因此,如果grep没有返回任何内容,则意味着它找不到您正在搜索单词。 ? 查找字符串 如果您需要搜索文本字符串而不是单个单词,则需要将字符串用引号引起来。...下面是一个我们在文本文档搜索字符串示例。 $ grep 'Class 1' Students.txt ? 查找多个字符串 您也可以使用grep查找多个单词字符串。您可以使用-e开关指定多个模式。...填充空间或制表符 正如我们在前面关于如何搜索字符串解释中提到那样,如果文本包含空格,则可以将文本包装在引号。选项卡也可以使用相同方法,但是稍后我们将说明如何在grep命令添加选项卡。...如您在屏幕截图中所见,当我们使用-v开关运行相同命令时,不再显示排除字符串 Grep和替换 传递给sedgrep命令可用于替换文件字符串所有实例。

    62.1K55

    NLP->IR | 使用片段嵌入进行文档搜索

    这些突出显示连接词在很大程度上被传统搜索系统忽略,它们不仅可以在捕获用户意图方面发挥关键作用(例如,“蝙蝠冠状病毒”不同于“蝙蝠是冠状病毒来源”或“蝙蝠不存在冠状病毒”)搜索意图,但是,保留它们句子片段也可以是有价值候选索引...或者“冠状病毒与之结合受体”,即使是在最近发布covid19数据集这样小数据集上(约500 MB语料库大小,约13k文档,8500多万单词文本约有100万个不同单词),也是一个挑战。...即使搜索引擎在结果中会突出显示术语,但是这种结果质量下降是还是显而易见, 例如,在下图中,当前搜索引擎选择性地突出显示了“蝙蝠作为冠状病毒来源”(“bats as a source of coronavirus...值得注意是,以下示意图中要点是,摘要是文档实际匹配项(括号数字是包含片段文档数以及带有输入搜索片段片段余弦距离),而不是在传统搜索系统显示建议查询或相关搜索查询。...BERT在片段区域表现最好(≥5个单词) 5. 邻域直方图分布如何查找术语和片段以下是BERT和Word2vec单词、短语(3个单词)和片段(8个单词)邻域,它们说明了这两个模型互补性。

    1.4K20

    手把手教你从零起步构建自己图像搜索模型

    根据我们为许多语义理解项目提供技术指导经验,我们编写了一个教程,让读者了解如何构建自己表征模型,包括图像和文本数据,以及如何有效地进行基于相似性搜索。...那么,我们该如何在实际中使用深度学习表示来创建搜索引擎? 我们最终目标是拥有一个搜索引擎,它可以接收图像并输出相似的图像或标签,可以接收文本并输出类似的单词或图像。...文本 此外,我们加载已在 Wikipedia 上预训练单词嵌入(本教程将使用 GloVe 模型单词嵌入)。我们将使用这些向量将文本合并到我们语义搜索。...在下图中,这过程由绿色突出显示嵌入层表示,该嵌入层位于最终分类层之前。 ? 对于我们嵌入,我们在最终分类层之前使用该层。...这个很棒方法最初是从 Insight 研究员 Daweon Ryu 那里看到。例如,在下图中,我们使用 Siamese cat 类权重来重新赋予我们数据集上激活(以绿色突出显示权重。

    66130

    如何在Linux中使用grep命令?

    我们可以使用grep搜索文件文本模式,另一方面,可以使用find命令在linux OS搜索文件。除此之外,我们还可以使用grep命令过滤搜索结果以捕获特定文本字符串单词或数字。...如果在您所在位置文件内搜索文本,则可以使用相对路径。但是,如果要在其他位置文件搜索文本,则必须使用绝对路径。 要搜索单词短语时,请记住使用“”or“”。...选项5:使用-i忽略大小写 在这里,我创建了一个名为“ osa”文本文件。它在下面的同一行包含两个单词。 ? 参见下面的-i选项如何工作 ? 3)在文件搜索词组 ?...grep -w boo example.txt 如何在单个文件搜索两个单词 grep -w'word1 | word2'example.txt 选项8:使用-v选项可忽略搜索结果关键字 ?...重要提示–我们不仅可以使用grep命令搜索文件字符串模式,还可以从不同命令输出过滤特定字符串模式。 1)显示所有磁盘详细信息 ? 2)检查syslog文件错误 ?

    3K41

    java怎么用_如何使用Java编写程序

    查找计算机显示系统类型任何位置。如果显示基于X86PC,则您计算机是32位。如果显示是基于X64PC,则您计算机是64位。对于显示图片,我正在运行32位,如系统信息栏显示那样。...接下来,单击适合您计算机JDK下载正确版本(X-86或X-64。)为了突出参考,我在图中突出显示了Windows下载。 步骤5:安装JDK第一部分 下载完成后,将自动弹出一个窗口。...在中间菜单,滚动到Path变量,将其突出显示,然后单击页面底部附近编辑按钮,如第一幅图所示。一长串计算机单词将弹出。滚动到开头,然后插入“bin;”。...字符串字符,以便它显示为“C:\ProgramFiles\Java\jdk1.7.0\bin;”。这在第二张图中显示。最后,单击确定,直到退出所有菜单。现在,我们终于可以开始真正编码了。...键入以下单词,除了一件事外(完全大写)。成绩单下面将并排引用两个。在这些引号之间插入所需任何文本

    3.2K20

    GitHub代码搜索服务发展历史

    搜索界面将让您在源代码输入您要查找任何内容,并获得我们公共存储库匹配任何文件突出显示结果。 您还将获得一个侧边栏,其中包含结果语言细分和存储库细分方面计数。...将要点索引到 Elasticsearch 以使其可搜索初步试验显示出巨大希望,不久之后显示这是 GitHub 上所有搜索未来,包括代码搜索。...如果仔细观察,您会发现查询字符串中被忽略字符列表! 由该拆分产生标记然后进行最后一轮拆分,提取以 CamelCase 和 snake_case 分隔单词部分作为附加标记,使它们可搜索。...特殊字符根本没有出现在索引;相反,重点是从标识符和关键字恢复单词。 设计文本分析器很棘手,一方面涉及索引大小和性能之间艰难权衡,另一方面涉及可以回答查询类型。...当然,发生匹配存储库也会影响排名。我们希望在作为测试创建长期被遗忘存储库随机匹配之前显示来自流行开源存储库结果。 所有这一切都在进行

    1.3K10

    DAY1 呦呦鹿鸣

    一.学习小组正确打开方式1.如何学习电脑+讨论学习+学习心得+wx群2.解决问题搜索引擎:Google>bing专业教程:搜狗微信、搜狗知乎、github讨论:wx群提问:截图,技术性,wx群提问(学习小组内...),邮件提问(学习小组外)二.如何搭建高效学习平台1.效率软件Everything(电脑文件搜索)——速度贼拉快,用过都说好snipaste 快捷截图软件 F1启动 电脑版微信+QQ 有截图功能(...加粗(5)斜体:要斜体突出单词中间部分,请在字母前后各添加一个星号,中间不要带空格。 斜体(6)粗斜体 请在单词或短语前后各添加三个星号或下划线。...要加粗并用斜体显示单词或短语中间部分,请在要突出显示部分前后各添加三个星号,中间不要带空格。粗斜体文本(7)删除线(8)分割线为了兼容性,请在分隔线前后均添加空白行。...(9)段落这是第一段这是第二段,没错,我空了一行(10)链接链接文本放在括号内,链接地址放在后面的括号,链接title可选。

    19100

    Day1——迪迪

    Day1——迪迪搜索引擎虫部落快搜专业教程:搜狗微信、搜狗知乎似乎虫部落快搜比较多网页需要翻墙使用截图软件 :win+s也还行 目前没有其他要求分割线*****************关于markdown...语法练习代码块hello world引用R学习加油嵌套块引用不知道为啥没体现代码行 hello world 加粗 要加粗文本,请在单词或短语前后各添加两个星号(asterisks)或下划线 斜体 要用斜体显示文本...要斜体突出单词中间部分,请在字母前后各添加一个星号,中间不要带空格。 要 同时用粗体和斜体突出显示文本,请在单词或短语前后各添加三个星号或下划线。...要加粗并用斜体显示单词或短语中间部分,请在要突出显示部分前后各添加三个星号,中间不要带空格。网址插入undefinedMarkdown官网 !...[图片alt](图片链接 "图片title")给图片生成链接图片增加链接,请将图像Markdown 括在方括号,然后将链接添加在圆括号。[!

    19140
    领券