首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >是否可以将子字符串转到字符串中的下一个空格?

是否可以将子字符串转到字符串中的下一个空格?
EN

Stack Overflow用户
提问于 2021-01-06 07:36:44
回答 3查看 70关注 0票数 1

如果输入的文本值包括单词的开头,我将试图突出显示单词的其余部分。例如,我们有一串“营养是伟大的!”,如果用户键入"Nutr“,那么我希望”营养“被突出显示。我在这方面有很大的困难,我想知道是否可以将子字符串转到下一个可用的空格?或者,如果有人能给我指点一个不同的/更好的方法。

我从这个职位获得了一些灵感,但不幸的是,它与我想要的单词不匹配。

我创建了一个沙箱来演示我的示例,您会注意到,如果您输入"Nutr“,那么只有两个选项会被高亮显示,而如果可能的话,所有3个选项都应该突出显示吗?

https://codesandbox.io/s/dry-wind-17mko

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2021-01-06 09:48:33

你有一些问题,在其他人已经指出的上/下大小写。你也包括了句末的句号,这不太可能是你的意图。

此解决方案不需要更改输入或任何内容的情况。

我想提供一种更简单的方法,使用正则表达式和String对象的.match()方法。

这将允许不区分大小写的匹配,而只突出显示该单词。在下面的代码中,您将看到匹配的搜索单词被放置到HTML中,只需简单地调用.replace(),添加<span>标记。

匹配的基础是找到键入的字符,然后找到单词边界(您在问题中提到的空格)。

代码语言:javascript
运行
AI代码解释
复制
if (titleRef.current) {
  let resultsText = titleRef.current.innerHTML;
  const regex = new RegExp("(?=" + searchTerm + ")\\w*", "i");
  const found = resultsText.match(regex);
  if (found) {
    titleRef.current.innerHTML = resultsText.replace(found[0],`<span>${found[0]}</span>`);
  }
}

还有一个问题。如果搜索不再匹配(假设您键入'nutrdddd‘),则原始匹配仍然突出显示。因此,要克服这一问题,您需要删除span标记,我将由您决定。

希望这会有帮助。这是CodeSandBox

票数 1
EN

Stack Overflow用户

发布于 2021-01-06 07:50:16

比较必须基于字符串,无论是大写还是小写,这样我们就可以选择文本字符串,而不管是大写还是小写。

更新:

此外,我们只需要根据匹配来选择术语,而不是在span中选择完整的文本长度。

更新CODESANDBOX: https://codesandbox.io/s/highlighting-z216x

逻辑,以使特定的文本更新为动态工作。

useEffect()Result.js中的代码更改

代码语言:javascript
运行
AI代码解释
复制
  useEffect(() => {
    console.log(searchTerm);
    if (titleRef.current) {
      let resultsText = titleRef.current.textContent.toUpperCase();
      const index = resultsText.toUpperCase().indexOf(searchTerm);
      
      const text = resultsText.substr(index, resultsText.length).split(" ")[0];
      if (index >= 0) {
        resultsText =
          resultsText.substring(0, index) +
          "<span>" +
          text +
          "</span>" +
          resultsText.substring(index + text.length);
        titleRef.current.innerHTML = resultsText;
      }
    }
  }, []);

App.js中,我们需要确保将searchTerm作为大写props传递

代码语言:javascript
运行
AI代码解释
复制
    <Result
      text="This is nutritional value"
      searchTerm={searchTerm.toUpperCase()}
    />
票数 1
EN

Stack Overflow用户

发布于 2021-01-06 07:46:37

首先,您需要将字符串和输入都更改为小写或大写,以便在相同的基础上进行比较。rest很好,您可以使用.includes()方法进行检查,并且可以使用.trim()方法修剪字符串,因为这样只能突出显示所需的单词。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65598718

复制
相关文章
python 判断字符串是否包含(不区分大小写)
python 判断字符串是否包含(不区分大小写) 通过in运算符来检查或通过str.find("")来检查 如果想要不区分大(upper())小(lower())写,可以将字符串全部转换为大写字母或小写字母 示例: a = "Hello World,你好世界" # 通过in运算符来检查。 if "Hello" in a: print("Yes") # 通过str.find("")来检查。 if a.find("Hello") != -1: print("Yes") # 如果想要不
超级小的大杯柠檬水
2023/05/06
2.8K0
Git 开启区分大小写
默认情况下git是忽略区分大小写的,多人合作的情况下不规范很容易造成问题,本文记录Git大小写敏感的配置方法。 步骤 开启 全局开启 git config --global core.ignorecase false 查看 找到 core.ignorecase=false 即说明修改完毕 git config --list 参考资料 https://www.cnblogs.com/wangyang0210/p/10767951.html
为为为什么
2022/08/06
1.7K0
Windows 不区分大小写
之前就看过说 Windows 不区分大小写,但平时用得少倒也没什么体验,没想到还真能踩一次坑。
zqb_all
2020/05/04
2.7K0
Git 默认不区分大小写
背景: 通过代码规范,修改了包名为全小写(修改了文件夹目录),但发现push后,git服务器的文件夹目录还是为大写 解决方法: git默认是不区分大小写的,意思是你修改一个文件名/文件夹的时候,git status 是不会提示你有修改的  可以通过git config --get core.ignorecase 查看默认配置 通过git config core.ignorecase false设置为区分大小写 然后git status 就可以看到变动 然后push到远程服务器
千往
2018/01/24
2.1K0
vim替换区分大小写_word英文大小写切换
&是正则表达式全部匹配项, 其他的还有:\1,\2,\3,…,\9。表示第1,2,3…9个匹配项。
全栈程序员站长
2022/09/29
1.7K0
C语言 遍历一个文件夹的所有文件以及函数strstri不区分大小写查找字符串
path=/sys/class/drm/,d_name: card0-HDMI-A-1
IT工作者
2022/05/20
1.8K0
php字符串大小写转换函数
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/105851.html原文链接:https://javaforall.cn
全栈程序员站长
2022/08/09
1.2K0
细说MySQL区分字母大小写
在Linux系统上使用MySQL,MySQL是区分字母大小写的,例如建A表时表名是大写的A,修改A表时脚本里写的a,就会报错表a不存在。在MySQL中,数据库对应数据目录中的目录,数据库中的每个表至少对应数据库目录中的一个文件或多个文件,所以,是否区分大小写是其所在的操作系统决定的。在大多数基于Unix的系统中,MySQL是区分大小写的;而在Windows系统中,MySQL是不区分大小写的。 操作系统中提供了lower_case_table_names参数用于修改这种区分大小写的策略。默认情况下,Linux
JavaQ
2018/04/04
2.8K0
nginx 配置路由不区分大小写
location 指令说明,该语法用来匹配 url,语法如上: =:用于不含正则表达式的 url 前,要求字符串与 url 严格匹配,匹配成功就停止向下搜索并处理请求。 ~:用于表示 url 包含正则表达式,并且区分大小写。 ~*:用于表示 url 包含正则表达式,并且不区分大小写。 ^~:用于不含正则表达式的 url 前,要求 Nginx 服务器找到表示 url 和字符串匹配度最高的 location 后,立即使用此 location 处理请求,而不再匹配。 如果有 url 包含正则表达式,不需要有 ~ 开头标识。
2022/02/20
7K0
nginx 配置路由不区分大小写
以太坊地址区分大小写么
从实验结果上来看,纯小写地址和纯大写地址实际上是同一个地址,那么是不是由此可以得出以太坊地址不区分大小写呢?我们再看下面这个 remix 上的实验:
LA0WAN9
2021/12/14
1.4K0
以太坊地址区分大小写么
python函数——字符串字母大小写转换
在日常字符串操作中需要对其做大小写操作,python 中提供了四种大小写相关的操作方法: s = "HeLLo pYTHON"
莫斯
2020/09/10
9710
地图函数在 Python 中有什么用?
Python 的 map() 函数将一个函数应用于迭代器中作为输入提供的每个项目。列表、元组、集合、字典或字符串都可以用作迭代器,它们都返回可迭代的映射对象。Map() 是一个内置的 Python 函数。
很酷的站长
2023/02/20
7370
地图函数在 Python 中有什么用?
Excel公式技巧96:区分大小写查找
有时候,我们需要执行区分大小写的查找。如下图1所示,由字母a、t、l、a和s的不同大小写组成的字符串,现在要查找字符串“AtLaS”对应的数量。
fanjy
2021/07/12
1.7K0
Excel公式技巧96:区分大小写查找
SQL Server不区分大小写的问题
  默认情况下,SQL Server不区分大小写,如果数据表TEST的TNAME列中有数据“abcd”和“Abcd”, 如果使用查询语句:select * from test  where  tname  like 'a%',则查询的结果会把上面的两条记录都查询出来,这一点上和Oracle有区别.
跟着阿笨一起玩NET
2018/09/19
3.4K0
mysql 模糊查询实现不区分大小写
在上面语句中我们可以看到使用的是‘d%’或者是'D%'这样看上去好像有点不是很好。
凯哥Java
2019/07/01
5.1K0
【知识】以太坊地址是否区分大小写
从实验结果上来看,纯小写地址和纯大写地址实际上是同一个地址,那么是不是由此可以得出以太坊地址不区分大小写呢?我们再看下面这个 remix 上的实验:
辉哥
2021/05/18
7.6K0
【知识】以太坊地址是否区分大小写
flag区分大小写的sql盲注
可以看到不区分大小写,而且都会转化为大写。这个是因为MySQL不区分大小写,而且大写字符的ASCII码都比小写的小。
Power7089
2020/07/27
1.7K0
flag区分大小写的sql盲注
Qt 区分多个信号函数绑定一个槽函数
当有多个信号函数(Signal)绑定同一个槽函数(Slot)时,你会有这样的需求,在槽函数中我希望知道到底是哪个信号函数发送出来的信号,这样根据不同的发送者来执行不同的操作。想实现这个功能可以在槽函数中调用 sender() 方法获取发送信号的对象类型。然后进行处理,具体代码如下:
我与梦想有个约会
2023/10/20
4250
点击加载更多

相似问题

MYSQL:重音敏感但不区分大小写的最佳utf设置

12

php、mysql:比较字符串-区分重音和不区分大小写

10

QDirIterator应不区分大小写,但不区分大小写

10

如何匹配字符串,但不区分大小写?

61

PostgreSQL重音+不区分大小写的搜索

11
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档