删除时将字符替换为另一个字符

replacing the character with another one on deleting

本文关键字:字符 另一个 替换 删除      更新时间:2023-09-26

例如:我有这个值的输入:(099) 123 45 67我想在删除时用下划线 ( _) 替换数字,如下所示:(099) 123 __ __

我怎么做?我有一个函数,它返回我当前的字符位置。然后用charAt()我得到这个字符,然后用replace()替换它。但是,如果有多个相同的字符,它将替换第一个字符,而不是光标旁边的字符。有什么想法吗?

我认为标准的replace()函数无法适应这种类型的替换。

您必须使用 substring() 将字符串拆分为 to(一个字符串在字符之前,一个在字符之后),然后将它们与中间的'_'连接在一起。

使用 replace as 正则表达式函数。为此,请使用斜杠中的搜索表达式。要查找所有匹配项(所有数字,而不仅仅是第一个),请在搜索表达式后添加"g",将其与全局选项一起使用。在您的情况下,您应该使用 replace(/[0-9]/g, "_")

不同的答案 - 有点类似于@samjudson所说的:

你需要使用子字符串,但它有点复杂。

对于 IE 或 Opera,请使用以下对象:document.selection.createRange().text = "_";

对于 Mozilla 浏览器,请使用:

inputBox.focus();
var position = inputBox.selectionStart; //selectionEnd would work as well
inputBox.value = inputBox.value.substring(0, position) + '_' +
inputBox.value.substring(position, inputBox.value.length);

来自RT编辑的想法,例如这个:),以及维基百科上的那个。

相关文章: