Javascript 如果字符串变量存在,如何从中删除包含的[";]?
我有如下字符串变量:Javascript 如果字符串变量存在,如何从中删除包含的[";]?,javascript,Javascript,我有如下字符串变量: var a = '["Email cannot be null or empty."]'; var b = 'test string'; 是否有办法检查变量是否以“[”,“]]”开头和结尾,如果是,则删除这些变量,使变量变为: var a = 'Email cannot be null or empty.'; var b = 'test string'; 如果可能的话,我正在寻找的是一个单线解决方案。我不确定我是否可以使用一些正则表达式或索引函数。任何建议都将不胜感激。
var a = '["Email cannot be null or empty."]';
var b = 'test string';
是否有办法检查变量是否以“[”,“]]”开头和结尾,如果是,则删除这些变量,使变量变为:
var a = 'Email cannot be null or empty.';
var b = 'test string';
如果可能的话,我正在寻找的是一个单线解决方案。我不确定我是否可以使用一些正则表达式或索引函数。任何建议都将不胜感激。如果您知道这是一种可能的情况,且偏差很少:
function unformatString(str) {
try {
str = JSON.parse(str);
if (Object.prototype.toString.call(str) === '[object Array]') {
return str[0];
}
} catch (err) { }
return str;
}
var a = unformatString('["Email cannot be null or empty."]');
var b = unformatString('test string');
在您的情况下,上述解决方案可能是更好的解决方案,但文本替换的替代解决方案是 您可以使用以下方法修复字符串:
a = a.replace("[\"", "");
a = a.replace("\"]", "");
这将从字符串中的任何位置删除字符串[“
和”]
,无论是在字符串的前面、后面还是中间String.replace()
还支持正则表达式,而不仅仅是字符串,因此您可以在必要时编写一个快速正则表达式
if(a.indexOf('["')==0 && a.indexOf('"]')==a.length-2)
{
a = a.replace('[\"', '');
a = a.replace('\"]', '');
}
首先,我要检查变量是否以“[”,“]]”开头和结尾此代码将删除字符串开头的
[“
和结尾的”]
试试这个:
var a = '["Email cannot be null or empty."]';
a.replace(/[\[\"\]]/g, "")
//output "Email cannot be null or empty."
可以使用exec()方法对正则表达式执行此操作
不要那样做。相反,使用JSON解析器。@SLaks-我不知道这一点,但我很想知道如何使用它。
assert(JSON.parse(a)[0]==“电子邮件不能为null或空。”)
@YuriyGalanter我想OP会看到这一点,然后尝试/捕获并适当地处理它:我可以在一行中添加一个替换吗?是的,你可以像a=a.replace(“[\”,”).replace(“\”),”)
因为String.replace()
返回一个字符串。更简单的方法是使用replace的第一个参数作为正则表达式,而不是检查字符串中的位置。您可以执行以下操作:a=a.replace(“^[\”,”).replace(“\”]$,”)代码>
var a = '["Email cannot be null or empty."]';
a.replace(/[\[\"\]]/g, "")
//output "Email cannot be null or empty."
var cleanInput = function(str) {
var patt = /\["(.*)"]/g;
if( (result = patt.exec(str)) !== null )
return result[1];
else
return str;
},
input1 = '["Dummy string"]',
input2 = '["Another dummy string"]',
// Checking Inputs
input1 = cleanInput(input1),
input2 = cleanInput(input2);