Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/387.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 移除不需要的'-';人物_Javascript_Replace_Subscript - Fatal编程技术网

Javascript 移除不需要的'-';人物

Javascript 移除不需要的'-';人物,javascript,replace,subscript,Javascript,Replace,Subscript,这可能是一个快速而简单的答案。我正在为跟踪目标数据的应用程序更新一些代码。我们的客户希望为目标增加负值。这听起来不太对,但他们想把它添加到虚拟员工中,以便与公司总数保持平衡 我已经做了所有的事情,我只是试着用一种说话的方式让事情“白痴证明”,并处理所有可能出现的问题。 我已经更新了这个应用程序中当前存在的“onKeyDown”javascript函数,以修复用户输入-0或只是-symbol的问题。我想添加另一个层来防止他们把符号放在一个数字的中间,例如55-88而不是-5688。这是我为此编写的

这可能是一个快速而简单的答案。我正在为跟踪目标数据的应用程序更新一些代码。我们的客户希望为目标增加负值。这听起来不太对,但他们想把它添加到虚拟员工中,以便与公司总数保持平衡

我已经做了所有的事情,我只是试着用一种说话的方式让事情“白痴证明”,并处理所有可能出现的问题。 我已经更新了这个应用程序中当前存在的“onKeyDown”javascript函数,以修复用户输入-0或只是-symbol的问题。我想添加另一个层来防止他们把符号放在一个数字的中间,例如55-88而不是-5688。这是我为此编写的代码:

for (j=1; j< f.value.length; j++)
{
    buf2 = f.value.substr(j,1);
    if(buf2 == '-')
    {
     f.value = f.value.replace(f.value.substr(j,1),'');
    }

}
for(j=1;j
我从1开始for循环,以跳过字符串的第一个索引(如果它是-symbol),然后检查每个索引是否有-symbol,并将其替换为nothing,基本上删除它。它工作得很好,除非在开头也有一个-符号,否则它会删除第一个-符号而不是第二个


例如,当测试应用程序时,我键入56-88,它会按设计将此字段更新为5688,但是当我使用-56-88更新它时,它应该使用-5688更新它,但会给我56-88。我抓挠我的头在这个,因为它看起来应该是工作良好。感谢您的帮助

在您的情况下,它与第二个
-
(如果条件)匹配,但replace将仅替换开头的第一个匹配项

相反,只需在regex中使用方法,以避免在开始时使用
-

f.value = f.value.replace(/(?!^-)-/g,'')
console.log(
“-56-88”。替换(/(?!^--)-/g”“)

);有几种方法可以做到这一点,这取决于您希望解决方案的防白痴程度。 首先查看正则表达式,正如Pranav所说,您可以使用他发布的正则表达式来删除字符串中出现的所有“-”。您还可以在此处测试正则表达式:

还有可能不适合这种情况的更健壮的解决方案,例如使用类似于的工具,并解析不应该存在的任何内容的所需输入,包括“-a”(但这可能会大大超过杀戮)

同样,您可以在此阶段完全跳过迭代之前删除任何非数值:

myString = f.value.replace(/\D/g,'');
或者另一种方法是您正在尝试的递归方法,但就代码行数而言,它可能比其他方法更大


注意:)

在位置0处启动j使用
replace
方法使用正则表达式解决方案更容易,因为有人可能会在下面发表文章。可能重复感谢!我阅读了您的第一部分,并且能够理解为什么它会崩溃,这是我开发(Javascript新手)中更重要的部分。第二部分实际上是我想做的另一种方式,只是还没有测试过而已。谢谢你的帮助@用户2921015:很高兴这有帮助:)
myString = f.value.replace(/\D/g,'');