从查询字符串中删除"+"

Ste*_*rve 1 javascript string

我已经在互联网上搜索了这个答案.我有一个字符串数组,看起来像这样:

[0] Cinnamon+Chocolate+Twists
[1] 3.25+Ounce+Croissant 
Run Code Online (Sandbox Code Playgroud)

我需要从这些字符串中删除所有"+"字符,而是插入一个空格.以下代码不起作用:

nameProduct[1] = nameProduct[1].replace("+"," ");
Run Code Online (Sandbox Code Playgroud)

我尝试了.replace方法的几种变体,但没有运气.有任何想法吗?

Fel*_*ing 10

你必须使用带有global标志的正则表达式来替换每个字符的出现(是的,JavaScript在这方面表现得很奇怪(或者让我们说意外,取决于你来自哪种其他语言)):

nameProduct[1] = nameProduct[1].replace(/\+/g," ");
Run Code Online (Sandbox Code Playgroud)

使用循环为每个元素执行此操作.

MDC - replace文档


更新:

不要document.write用来创建HTML.你的代码需要大量的重构,但这超出了这个问题.数据处理正确,但生成的HTML不是:

<input type="text" size="40" name="Product1401" value="Cinnamon" chocolate="" twists="" readonly="">
Run Code Online (Sandbox Code Playgroud)

你看,你的报价有问题.文本的其他部分被识别为属性.

稍微改进的版本(仅此部分):

var nameProduct = hashes[i].split('=');
var tr = document.createElement('tr');
var td = document.createElement('td');
var input = document.createElement('input');

input.type = "text";
input.size = 40;
input.name = nameProduct[0]      
nameProduct[1] = nameProduct[1].replace(/%/g, '');
nameProduct[1] = nameProduct[1].replace(/2C/g, '');
nameProduct[1] = nameProduct[1].replace(/2F/g, '');
nameProduct[1] = nameProduct[1].replace(/28/g, '');
nameProduct[1] = nameProduct[1].replace(/29/g, '');
nameProduct[1] = nameProduct[1].replace(/\+/g, " ");

input.value = nameProduct[1];
input.readOnly = true;

td.appendChild(input);
tr.appendChild(td);
document.getElementById('gradient-style').tBodies[0].appendChild(tr);
Run Code Online (Sandbox Code Playgroud)

DEMO