【问题标题】:Find first word in a string after a . in javascript在 a 之后的字符串中查找第一个单词。在 JavaScript 中
【发布时间】:2021-01-31 11:18:43
【问题描述】:

我正在做一项学校作业,我们必须突出显示“。”之后的第一个单词。在文本中按下按钮。

就我而言,我已经创建了一个 HTML 页面,该 HTML 页面包含一个按钮,点击它应该突出显示“。”之后的第一个单词。我发现我可能不得不使用 split 或 slice。

function highligtWord(){

var tekst = document.getElementById("tekst").innerHTML;  

for (var i = 0 ;  i < tekst.length; i++) {
    var arr = tekst.split(". ")[i].split(" ")[0] 

    console.log(arr)
    var res = tekst.replace(`${arr}`, "<span style=background-color:yellow>" + `${arr}` + "</span>" );
    document.getElementById("tekst").innerHTML += res;     
}       

到目前为止,这并没有按预期工作,因为它“突出显示”不在“。”之后的单词。所以我的问题是,我做错了什么? 我怎样才能让你在“。”之后“突出”所有单词。代替?

提前致谢

【问题讨论】:

  • 请考虑将其格式化为 SO sn-p。这样其他人就可以清楚地看到您的问题。这只是一个建议,但它可能会提高您的问题的质量。你的代码也不完整。

标签: javascript split slice


【解决方案1】:

使用正则表达式可能更容易 - 匹配 \.(文字点),然后匹配 \S+ - 一个或多个非空格字符。然后用高亮范围包围的非空格字符替换:

const elm = document.getElementById("tekst");
elm.innerHTML = elm.innerHTML.replace(
  /(\. *)(\S+)/,
  '$1<span style=background-color:yellow>$2</span>'
);
&lt;div id="tekst"&gt;foo bar. baz should be highlighted.&lt;/div&gt;

如果您想突出显示. 之后的所有 个单词,请使用全局标志代替正则表达式(使用/g)。

【讨论】:

  • 感谢您的快速回复! :) 我可能只是 JavaScript 和正则表达式的新手,但我应该把 /g 放在哪里?再次感谢!
  • 所有正则表达式标志所在的位置 - 在模式结束之后。例如/foo/gfoo 的全局模式
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-22
  • 2013-04-08
相关资源
最近更新 更多