将大括号之间的文本替换为此文本 [关闭]

Replace text between curly brackets to div with this text [closed]

提问人:AndryAndryAndry 提问时间:11/17/2023 更新时间:11/17/2023 访问量:52

问:


想改进这个问题吗?更新问题,使其仅通过编辑这篇文章来关注一个问题。

4天前关闭。

我有输入和文本区域。我使用 vue 将 textarea 的文本设置为输入的内容。我希望能够写一些东西,比如改变文本的颜色。现在,我真的不需要任何颜色,我只想知道如何在 {#} 和 {/#} 之间查找文本并将其放入改变颜色的 div。{#123123}text{/#}

我什至不知道从哪里开始,可能我应该使用一些函数来查找,然后在它之后检查文本,然后找到,但我真的不确定。{}

javascript html , css, vue.js

评论

0赞 Titus 11/17/2023
为此,您可以使用正则表达式,例如 .您应该检查返回 from,因为它可能是,并且使用 on 会导致错误。'{#123123}text{/#}'.match(/{#[^}]+}(.*){\/#}/)[1]matchnull[1]null
0赞 AndryAndryAndry 11/17/2023
提图斯,我按照你说的用了,我不确定它是否有效,因为我用了“setInterval”来记录,0是.它;几乎是对的,但我也想知道这两者之间有什么.无论如何,谢谢,它几乎有效!Yogi,我猜你误会了,我不想更改 textarea 中的文本,我正在用 vue 单独显示它。另外,如果有人也会对这个问题投反对票,你能说说你为什么投反对票吗?我真的很想问好问题,我不想有关于0的声誉。'{#123123}text{/#}'.match(/{#[^}]+}(.*){\/#}/)[1]{#123123}text{/#}{# }
0赞 AndryAndryAndry 11/17/2023
我搜索了一下,看起来正则表达式是我需要的!谢谢!
0赞 Titus 11/17/2023
在这种情况下,您可以使用如下内容: .在前面使用逗号很重要(例如:)。然后,您可以只使用 和 变量。const [,color, text] = '{#123123}text{/#}'.match(/{(#[^}]+)}([^{]+){\/#}/);color[,color.....colortext
0赞 Titus 11/17/2023
我已经发布了一个答案,不是 Vue,但我想你会明白的。

答:

0赞 Titus 11/17/2023 #1

您可以使用正则表达式来做到这一点,下面是一个示例:

const input = document.querySelector('input');
const textArea = document.querySelector('textArea');

input.oninput = process;

function process() {
  const match = input.value.match(/{(#[^}]+)}([^{]+){\/#}/);
  if (match) {
    const [, color, text] = match;
    textArea.value = text;
    textArea.style.color = color;
  }
}

process();
<input type="text" value="{#a83232}text{/#}" />
</br>
</br>
<textarea></textarea>

评论

0赞 AndryAndryAndry 11/17/2023
你好。非常感谢您的回答:3 我需要知道的是如何获得乘以颜色/文本。喜欢。{#123123}text{/#} blablabla {#abcabc}even more text{/#}
0赞 AndryAndryAndry 11/17/2023
看来我需要!非常感谢您的回答!matchAll()
0赞 Titus 11/17/2023
@AndryAndryAndry 我很高兴我能帮上忙。祝你好运。