【问题标题】:JS: search for specific string in textareaJS:在textarea中搜索特定字符串
【发布时间】:2016-04-04 13:38:21
【问题描述】:

我正在做一个关于 JavaScript 的入门课程的项目,我确实需要在某个方面的帮助。

如何在剧本的文本块中搜索字符串? 例如,如何在下面的文本中搜索 Messenger 并将其用作值?

而不是像下面这样一整块文本,它应该看起来更像这种格式:

AGAMEMNON: //dialogue
CLYTAEMNESTRA: //dialogue
阿伽门农 //对话

到目前为止,我已经尝试了 .match 属性和 .indexOf 属性,但不知道我的其他选项是什么。

请帮忙!

克吕泰涅斯特拉 不要说这只是为了藐视我的安排。 阿伽门农 你应该知道我不会反悔我说过的话。 克力泰内斯特拉 那么,你必须害怕一些事情,然后才能这样做。 你对众神做出了一些承诺。 1100 阿伽门农 我已经说了我的最后一句话。我完全明白, 和任何人一样,我正在做的事情。 克力泰内斯特拉 你认为普里阿摩斯会做什么, 如果他有你的成功? 阿伽门农 这很清楚—— 他会走过这些挂毯。 克力泰内斯特拉 那么,为什么要对男人说的话感到羞耻呢? 阿伽门农 但人们所说的可以有很大的力量。 克力泰内斯特拉 是的,但人们不羡慕的人 不值得他们羡慕。

【问题讨论】:

  • 此文本示例的预期结果是什么?
  • 理想情况下 1. 它的工作方式类似于浏览器上的查找功能并查找“发言人”之一的姓名。 2. 我可以找到一种方法将他们所说的对话作为一个单独的字符串。
  • 只需在您的问题中包含预期的结果。这将更容易获得好的答案。
  • 你必须得到textarea的值,像这样:document.getElementById("textareaID").value,然后你可以使用.indexOf来搜索文本
  • @Tresdin 我对我的问题进行了一些编辑。听起来是不是更清楚了? mjr - 我试过这个,但它只给了我它的位置。 inputText = document.getElementById("inputText").value; match1 = inputText.indexOf(char1Name); document.body.innerHTML = match1;

标签: javascript string textarea project


【解决方案1】:

1) 获取textarea的文本内容

var txt = document.querySelector('textarea').textContent;

2) 定义正则表达式以将文本区域拆分为组件部分

var regex = /[A-Z]+ [\w’, ]+\./g

3) 返回匹配数组

var roles = txt.match(regex);

4) map 遍历数组并返回包含名称和描述的 HTML 数组

var html = roles.map(function (role) {
  role = role.replace(/([A-Z]+) /, '$1:').split(':');
  return [
    '<div class="name">',
    role[0],
    '</div>',
    '<div class="desc">',
    role[1],
    '</div>'].join('');
});

5) 将 HTML 添加到 DOM

document.getElementById('out').innerHTML = html.join('');

输出

克吕泰涅斯特拉

不要说这只是为了蔑视我的安排。

阿伽门农

你应该知道我不会反悔。

DEMO

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-18
    • 2014-05-27
    • 2023-03-07
    • 2021-12-02
    • 1970-01-01
    相关资源
    最近更新 更多