Подтвердить что ты не робот

Я хочу удалить двойные кавычки из строки

Я хочу удалить "" вокруг строки.

например. если строка: "I am here", тогда я хочу вывести только I am here.

4b9b3361

Ответ 1

Предполагая, что:

var someStr = 'He said "Hello, my name is Foo"';
console.log(someStr.replace(/['"]+/g, ''));

Это должно сделать трюк... (если ваша цель - заменить все двойные кавычки).

Вот как это работает:

  • ['"] - это класс символов, который соответствует как одиночным, так и двойным кавычкам. вы можете заменить это на ", чтобы соответствовать двойным кавычкам.
  • +: один или несколько кавычек, символы, определенные предыдущим классом char (необязательно)
  • g: глобальный флаг. Это говорит JS применять регулярное выражение ко всей строке. Если вы опустите это, вы замените только один char.

Если вы пытаетесь удалить кавычки вокруг данной строки (то есть попарно), все становится немного сложнее. Вам нужно будет использовать утверждения поиска:

var str = 'remove "foo" delimiting double quotes';
console.log(str.replace(/"([^"]+(?="))"/g, '$1'));
//logs remove foo delimiting quotes
str = 'remove only "foo" delimiting "';//note trailing " at the end
console.log(str.replace(/"([^"]+(?="))"/g, '$1'));
//logs remove only foo delimiting "<-- trailing double quote is not removed

Regex объяснил:

  • ": literal, соответствует любому литералу "
  • (: начать сбор группы. Все, что находится между круглыми скобками (()), будет записано и может использоваться в заменяемом значении.
  • [^"]+: класс символов, соответствует всем символам, кроме " 1 или более раз
  • (?="): значение с нулевой шириной (как в не полученном) положительное утверждение. Предыдущее совпадение будет действительным только в том случае, если за ним следует " literal
  • ): группа завершения захвата, мы захватили все, что находится между закрывающим закрытием "
  • ": еще один литерал, элемент списка cf

Замена '$1', это обратная ссылка на первую захваченную группу, являющуюся [^" ]+, или нахождение между двойными кавычками. Шаблон соответствует как цитатам, так и тем, что между ними, но заменяет их только тем, что находится между кавычками, тем самым эффективно удаляя их.
Что он делает, это some "string with" quotes → заменяет "string with" на → string with. Котировки ушли, работа выполнена.

Если кавычки всегда будут в начале и в конце строки, вы можете использовать это:

str.replace(/^"(.+(?="$))"$/, '$1');

При вводе remove "foo" delimiting " вывод останется неизменным, но измените входную строку на "remove "foo" delimiting quotes", и в итоге вы получите remove "foo" delimiting quotes.

Пояснение:

  • ^": соответствует началу строки ^ и ". Если строка не начинается с ", выражение уже не работает здесь, и ничего не заменяется.
  • (.+(?="$)): сопоставляет (и захватывает) все, в том числе двойные кавычки, один или несколько раз, при условии, что положительный прогноз имеет значение
  • (?="$): положительный lookahead почти такой же, как и выше, только он указывает, что " должен быть концом строки ($ === end)
  • "$: совпадает с завершающей цитатой, но не фиксирует его

Замена выполняется так же, как и раньше: мы заменяем совпадение (включая кавычки открытия и закрытия) со всем, что было внутри них.
Возможно, вы заметили, что я опустил флаг g (для глобального BTW), потому что поскольку мы обрабатываем всю строку, это выражение применяется только один раз.
Более легкое регулярное выражение, которое делает, в значительной степени, одно и то же (внутренняя разница в том, как компилируется/применяется регулярное выражение):

someStr.replace(/^"(.+)"$/,'$1');

Как и раньше, ^" и "$ соответствуют разделительным кавычкам в начале и конце строки, а (.+) соответствует всем, что находится между ними, и фиксирует его. Я пробовал это регулярное выражение, рядом с тем, что было выше (с одобрением) и, по общему признанию, к моему удивлению обнаружил, что это немного медленнее. Мое предположение заключалось бы в том, что утверждение lookaround заставляет предыдущее выражение сбой, как только движок определяет, что в конце строки нет ". Хорошо, но если это то, что вам нужно/нужно, пожалуйста, прочитайте:

Однако в этом последнем случае это намного безопаснее, быстрее, удобнее и лучше сделать это:

if (str.charAt(0) === '"' && str.charAt(str.length -1) === '"')
{
    console.log(str.substr(1,str.length -2));
}

Здесь я проверяю, являются ли первые и последние char в строке двойными кавычками. Если они есть, я использую substr, чтобы отключить эти первые и последние символы. Строки индексируются нулями, поэтому последний char - это charAt(str.length -1). substr ожидает 2 аргумента, где первый - смещение, из которого начинается подстрока, вторая - его длина. Поскольку мы не хотим использовать последний char, больше, чем мы хотим, первая длина str.length - 2. Easy-peazy.

Советов:

Подробнее о утверждениях поиска можно найти здесь
Regex очень полезны (и удовольствие от IMO), сначала может быть немного озадачено. Вот еще несколько деталей и ссылки на ресурсы по этому вопросу.
Если вам пока не очень удобно использовать регулярное выражение, вам может потребоваться использовать:

var noQuotes = someStr.split('"').join('');

Если в строке много кавычек, это может быть даже быстрее, чем использование regex

Ответ 2

str = str.replace(/^"(.*)"$/, '$1');

Это регулярное выражение будет удалять только кавычки, если они являются первым и последним символами строки. F.ex:

"I am here"  => I am here (replaced)
I "am" here  => I "am" here (untouched)
I am here"   => I am here" (untouched)

Ответ 3

Если в строке гарантирована одна цитата (или любой другой одиночный символ) в начале и конце, которые вы хотите удалить:

str = str.slice(1, -1);

slice имеет гораздо меньше накладных расходов, чем регулярное выражение.

Ответ 4

Если у вас есть контроль над вашими данными, и вы знаете, что ваши двойные кавычки окружают строку (поэтому не отображаются внутри строки), и строка является целым числом... скажем с:

"20151212211647278"

или подобное это приятно удаляет окружающие цитаты

JSON.parse("20151212211647278");

Не универсальный ответ, однако приятный для нишевых потребностей

Ответ 5

Если вы хотите только удалить граничные кавычки:

function stripquotes(a) {
    if (a.charAt(0) === '"' && a.charAt(a.length-1) === '"') {
        return a.substr(1, a.length-2);
    }
    return a;
}

Этот подход не коснется строки, если она не похожа на "text in quotes".

Ответ 6

Если вы хотите удалить только цитаты из начала или конца, используйте следующее регулярное выражение:

'"Hello"'.replace(/(^"|"$)/g, '');

Ответ 7

Чтобы повторить вашу проблему таким образом, чтобы ее можно было выразить как регулярное выражение:

Получить подстроку символов, содержащуюся между нулевым или одним ведущим двойным кавычками и нулевым или одним завершающим двойным кавычком.

Здесь regexp, который делает это:

  var regexp = /^"?(.+?)"?$/;
  var newStr = str.replace(/^"?(.+?)"?$/,'$1');

Нарушение регулярного выражения:

  • ^"? жадное соответствие для нуля или одной ведущей двойной кавычки
  • "?$ жадное соответствие для нуля или одной завершающей двойной кавычки
  • эти два bookend - нежелательный захват всех других символов, (.+?), который будет содержать цель как $1.

Это вернет delimited "string" here для:

str = "delimited "string" here"  // ...
str = '"delimited "string" here"' // ...
str = 'delimited "string" here"' // ... and
str = '"delimited "string" here'

Ответ 8

Один лайнер для ленивых людей

var str = '"a string"';
str = str.replace(/^"|"$/g, '');

Ответ 9

Если вы хотите удалить все двойные кавычки в строке, используйте

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

Ответ 10

Этот простой код также будет работать, чтобы удалить, например, двойную кавычку из строки, окруженной двойной цитатой:

var str = 'remove "foo" delimiting double quotes';
console.log(str.replace(/"(.+)"/g, '$1'));

Ответ 11

Это работает...

var string1 = "'foo'";
var string2 = '"bar"';

function removeFirstAndLastQuotes(str){
  var firstChar = str.charAt(0);
  var lastChar = str[str.length -1];
  //double quotes
  if(firstChar && lastChar === String.fromCharCode(34)){
    str = str.slice(1, -1);
  }
  //single quotes
  if(firstChar && lastChar === String.fromCharCode(39)){
    str = str.slice(1, -1);
  }
  return str;
}
console.log(removeFirstAndLastQuotes(string1));
console.log(removeFirstAndLastQuotes(string2));

Ответ 12

var expressionWithoutQuotes = '';
for(var i =0; i<length;i++){
    if(expressionDiv.charAt(i) != '"'){
        expressionWithoutQuotes += expressionDiv.charAt(i);
    }
}

Это может работать для вас.

Ответ 13

Пожалуйста, попробуйте следующее регулярное выражение для удаления двойных кавычек из строки.

    $string = "I am here";
    $string =~ tr/"//d;
    print $string;
    exit();

Ответ 14

Если вы пытаетесь удалить двойные кавычки, попробуйте выполнить

  var Stringstr = "\"I am here\"";
  var mystring = String(Stringstr);
  mystring = mystring.substring(1, mystring.length - 1);
  alert(mystring);

Ответ 15

Это код java script...

    var string="I am here"
    var stringify= JSON.stringify(string);
    element= stringify.replace (/"/g,'');
    document.getElementById("demo").innerHTML = element;

Это html-код.