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);