如何优雅替换括号内部的值?

codingfly
  • 513

问题:列表中有如下结构的字符串若干:

1.月末(:日期)
2.月初(:日期)
……

需求:点击对应的项,如在这里点击 月末(:日期)这一项,那么在相应的input中的值为

月末(:日期)

再次点击,input的值为

月末(月末(:日期))

以此类推。
类似这样的操作逻辑javascript有什么比较好的实现方法吗?

回复
阅读 1.1k
2 个回答

不知道是不是这意思?好像没什么复杂的...我理解错了?

<input type='text' id='in'/>
<ul>
<li onclick='return endClick();'>月末(:日期)</li>
<li>月初(:日期)</li>
</ul>
<script>
function endClick(){
let v=document.getElementById('in').value;
if(v=='')document.getElementById('in').value='月末(:日期)';
else
    document.getElementById('in').value="月末("+ v+")";
}
</script>
</p>

又看了一遍问题,发现似乎我确实理解错了,但是我觉得这个问题需要从用户的角度去理解这个事情.如果你要替换括号内的内容,当有多个括号的时候,替换哪一级别括号就成为了问题.你还需要知道当时的光标停留在那里,加入组件失去了焦点,还能获得光标位置么?还是要用户选择要替换的部分?不论如何,从逻辑还是复杂度都会增加,反而不如现在这个,直接将当前值作为参数套用所选择的公式来的简单直接.另外,如果说要做前面所说的复杂公式的话,简单的input恐怕就不够了.

用正则表达式匹配第一个括号之前和最后一个括号之后的内容,然后中间拼接上值本身即可。

你知道吗?

宣传栏