我想删除字符串周围的“”。
例如,如果字符串是:“I am here”,那么我只想输出I am here。
我想删除字符串周围的“”。
例如,如果字符串是:“I am here”,那么我只想输出I am here。
当前回答
使用replaceAll
const someStr = 'He said "Hello, my name is Foo"';
console.log(someStr.replaceAll('"', ''));
// => 'He said Hello, my name is Foo'
其他回答
如果字符串保证在开头和结尾有一个引号(或任何其他单个字符),你想删除:
str = str.slice(1, -1);
Slice的开销比正则表达式小得多。
var expressionWithoutQuotes = '';
for(var i =0; i<length;i++){
if(expressionDiv.charAt(i) != '"'){
expressionWithoutQuotes += expressionDiv.charAt(i);
}
}
这可能对你有用。
如果要删除字符串中的所有双引号,请使用
var str = '"some "quoted" string"';
console.log( str.replace(/"/g, '') );
// some quoted string
否则,你想要删除字符串周围的引号,使用:
var str = '"some "quoted" string"';
console.log( clean = str.replace(/^"|"$/g, '') );
// some "quoted" string
str = str.replace(/^"(.*)"$/, '$1');
只有当引号是字符串的第一个和最后一个字符时,这个regexp才会删除引号。F.ex:
"I am here" => I am here (replaced)
I "am" here => I "am" here (untouched)
I am here" => I am here" (untouched)
以一种更容易用正则表达式表达的方式重申你的问题:
获取包含在0或1个开头双引号和0或1个结尾双引号之间的字符的子字符串。
下面是执行此操作的regexp:
var regexp = /^"?(.+?)"?$/;
var newStr = str.replace(/^"?(.+?)"?$/,'$1');
分解regexp:
^”?零或一个前导双引号的贪婪匹配 ”?$是零或一个尾随双引号的贪婪匹配 这两个字符将对所有其他字符(.+?)进行非贪婪捕获,其中将包含$1的目标。
这将返回带分隔符的“字符串”,用于:
str = "delimited "string" here" // ...
str = '"delimited "string" here"' // ...
str = 'delimited "string" here"' // ... and
str = '"delimited "string" here'