【发布时间】:2020-05-02 17:56:13
【问题描述】:
我的应用有TextArea 和Input。
❶=red, ❷=green, ❸=blue.
用户将sentence写入TextArea:并将sentence输入Input,他想更改其颜色。
sentence 是:
Hi hola, how are you, are you ok -> 转到TextArea
how are you 或 are you 或 you -> 转到 Input
现在用户想要更改一些words的color。
第 1 步
用户选择you并希望将其color更改为red;
所以正确的是:
Hi hola, how are #❶you#, are #❶you# ok
第 2 步
用户的想法变了,现在想选中are you,把两个字把are you的color改成green;
所以正确的是:
Hi hola, how #❷are you#, #❷are you# ok
第 3 步
用户的想法again变了,现在想选中how are you,把三个字how are you的color改成blue;
这里的第二个are you 仍然来自Step 2
所以正确的是:
Hi hola, #❸how are you#, #❷are you# ok
现在让我们思考以上unlike:
第 1 步
用户想选中how are you,把三个字把how are you的color改成red;
所以正确的是:
Hi hola, #❶how are you#, are you ok
第 2 步
用户的想法变了,现在想选中are you,把两个字把are you的color改成green;
所以在第1步中,他将three word (how are you)设为red,并在第2步将two word (are you)颜色更改为@ 987654370@,所以one word how 从第一步仍然是红色的,但are you 是green
所以正确的是:
Hi hola, #❶how# #❷are you#, #❷are you# ok
第 3 步
用户的想法 again 已更改,现在只想选择you 并将一个字 you 的color 更改为blue ;
所以在 第 1 步中,他将 three word (how are you) 作为 red,在 第 2 步中,他将 one word -> how 作为red 和 two word -> are you 为 green,但在此步骤 3 中仅将单词 you 的 color 更改为 blue,因此 how 仍然red 来自 步骤 1,are 是 green 来自 步骤 2,you 是 blue 来自 步骤 3
所以正确的是:
Hi hola, #❶how# #❷are# #❸you#, #❷are# #❸you# ok
//我的努力是:
let globalBalString = "Hi hola, how are you, are you ok";
let reminderObject = {};
// 这个函数在 react functional component.
const makeStyle = (sentence, colorSymbole) => {
if(reminderObject[sentence] === undefined){
reminderObject[sentence] = colorSymbole;
var newString = globalBalString.replace(new RegExp(sentence, "g"), `#${colorSymbole}${sentence}#`);
globalBalString = newString;
}else{
reminderObject[sentence] = colorSymbole;
var newString = globalBalString.replace(new RegExp(`#${reminderObject[sentence]}${sentence}#`, "g"), `#${colorSymbole}${sentence}#`);
globalBalString = newString;
}
}
我的解决方案仅适用于步骤 1,但不适用于 步骤 2 和步骤 3
【问题讨论】:
-
@WiktorStribiżew,非常感谢,您的解决方案仅适用于第一部分。
-
我已经编辑了这个问题以便更好地理解,请检查一下
-
这意味着您要在每次新搜索之前重置颜色。否则,我看不出它是怎么做到的。
-
我已经编辑了答案的结尾。在发布答案后,您已经大大改变了问题。 SO 不允许这样做,因为它会使答案不正确。澄清是好的,实质性的变化不是。您需要回滚到原来的问题。您可以随时提出其他问题。
标签: javascript regex reactjs