Eu quero remover o em ""
torno de uma String.
por exemplo, se a String for: "I am here"
então eu quero apenas a saída I am here
.
javascript
regex
ankur
fonte
fonte
str = str.replace(/"/g,"");
str = str.replace(/^"|"$/g, '');
substitui aspas de limite. A resposta de Mr_Green vai globalmente substituir todos os"
que não é bomRespostas:
Assumindo:
Isso deve funcionar ... (se seu objetivo é substituir todas as aspas duplas).
Veja como funciona:
['"]
é uma classe de caracteres, corresponde a aspas simples e duplas. você pode substituí-lo por"
para corresponder apenas aspas duplas.+
: uma ou mais cotações, caracteres, conforme definido pela classe de caracteres anterior (opcional)g
: a bandeira global . Isso diz ao JS para aplicar o regex a toda a cadeia. Se você omitir isso, substituirá apenas um único caractere.Se você estiver tentando remover as aspas em torno de uma determinada string (ou seja, em pares), as coisas ficam um pouco mais complicadas. Você precisará usar asserções de aparência:
Regex explicou:
"
: literal, corresponde a qualquer literal"
(
: começa a capturar o grupo. O que estiver entre parênteses (()
) será capturado e poderá ser usado no valor de substituição.[^"]+
: Classe de personagem, corresponde a todos os caracteres, exceto"
1 ou mais vezes(?=")
: asserção de aparência positiva à largura zero (como não capturada). A partida anterior só será válida se for seguida por um"
literal)
: final do grupo de captura, capturamos tudo entre o fechamento de abertura"
"
: outro literal, item de lista cf, umA substituição é que
'$1'
esta é uma referência anterior ao primeiro grupo capturado, sendo[^" ]+
ou tudo entre aspas duplas. O padrão corresponde às aspas e ao que há entre elas, mas o substitui apenas pelo que está entre as aspas, removendo-as efetivamente.O que ele faz é
some "string with" quotes
-> substitui"string with"
por ->string with
. Cotações desaparecidas, trabalho feito.Se as aspas sempre estiverem no início e no final da string, você poderá usar o seguinte:
Com a entrada
remove "foo" delimiting "
, a saída permanecerá inalterada, mas altere a sequência de entrada para"remove "foo" delimiting quotes"
e você terminaráremove "foo" delimiting quotes
como saída.Explicação:
^"
: corresponde ao início da string^
e a"
. Se a sequência não começar com a"
, a expressão já falhará aqui e nada será substituído.(.+(?="$))
: corresponde (e captura) tudo, incluindo aspas duplas uma ou mais vezes, desde que a aparência positiva seja verdadeira(?="$)
: o lookahead positivo é o mesmo que acima, apenas especifica que"
deve ser o fim da string ($
=== end)"$
: corresponde à citação final, mas não a capturaA substituição é feita da mesma maneira que antes: substituímos a partida (que inclui as aspas de abertura e fechamento) por tudo o que estava dentro delas.
Você deve ter notado que omiti a
g
flag (para BTW global), porque, como estamos processando toda a string, essa expressão se aplica apenas uma vez.Um regex mais fácil que faça praticamente a mesma coisa (há diferença interna de como o regex é compilado / aplicado) seria:
Como antes
^"
e"$
combinar as citações de delimitação no início e no final de uma corda, ea(.+)
partidas tudo mais, e captura-o. Eu tentei esse regex, ao lado do descrito acima (com afirmação lookahead) e, para minha surpresa, achei que este era um pouco mais lento. Meu palpite seria que a asserção de lookaround faz com que a expressão anterior falhe assim que o mecanismo determinar que não existe"
no final da string. Ah, bem, mas se é isso que você deseja / precisa, continue lendo :No entanto, neste último caso, é muito mais seguro, mais rápido, mais sustentável e apenas melhor para fazer isso:
Aqui, estou verificando se o primeiro e o último caractere da string são aspas duplas. Se estiverem, estou usando
substr
para cortar os primeiro e o último caracteres. As cadeias são indexadas a zero, portanto, o último caractere é ocharAt(str.length -1)
.substr
espera 2 argumentos, onde o primeiro é o deslocamento a partir do qual a substring inicia, o segundo é o seu comprimento. Como não queremos o último caractere, mais do que queremos o primeiro, esse comprimento éstr.length - 2
. Fácil-peazy.Dicas :
Mais informações sobre asserções detalhadas podem ser encontradas aqui. As
Regex são muito úteis (e divertidas para a IMO), podem ser um pouco desconcertantes a princípio. Aqui estão mais alguns detalhes e links para recursos sobre o assunto.
Se você ainda não está confortável com o uso de regex, considere usar:
Se houver muitas aspas na string, isso pode ser mais rápido do que usar regex
fonte
Essa regexp removerá as aspas apenas se eles forem o primeiro e o último caracteres da sequência. F.ex:
fonte
Se for garantido que a string tenha uma citação (ou qualquer outro caractere único) no início e no final que você deseja remover:
slice
tem muito menos sobrecarga do que uma expressão regular.fonte
<uri>
e literais como"literal"
). Então aqui está um voto positivo. ;)Se você tem controle sobre seus dados e sabe que suas aspas duplas envolvem a string (portanto, não apareça na string) e a string é um número inteiro ... diga com:
ou similar, isso remove as aspas circundantes
Não é uma resposta universal, no entanto, é escorregadia para necessidades de nicho
fonte
JSON.parse("20151212211647278dfvs");
SyntaxError: Unexpected token d in JSON at position 17
Se você deseja remover apenas as aspas de limite:
Essa abordagem não tocará a corda se não parecer
"text in quotes"
.fonte
a.charAt(x)
se desejar <suporte ao ECMA5 (ex.ex IE7).Se você deseja remover apenas aspas do início ou do fim, use a seguinte expressão regular:
fonte
"foo
efoo"
. Pode-se apenas querer descartar pares inteiros destes.Para reafirmar seu problema de uma maneira que seja mais fácil de expressar como uma expressão regular:
Aqui está o regexp que faz isso:
Quebrando a Regexp:
^"?
uma correspondência gananciosa para zero ou uma das aspas duplas principais"?$
uma correspondência gananciosa para zero ou uma aspas duplas à direita(.+?)
, que conterão o destino como$1
.Isso retornará
delimited "string" here
para:fonte
Um forro para o povo preguiçoso
fonte
/"/g
não vai funcionar"My name is \"Jason\""
." - is a quote
corda, por isso não é o mesmo que em tornoIsso funciona...
fonte
'foo"
ou simplesmentefoo"
Isso pode funcionar para você.
fonte
Se você deseja remover todas as aspas duplas na string, use
Caso contrário, você deseja remover apenas aspas ao redor da string, use:
fonte
Este código simples também funcionará, para remover, por exemplo, aspas duplas de uma string cercada por aspas duplas:
fonte
Se você estiver tentando remover as aspas duplas, tente seguir
fonte
este código é muito melhor para mostrar o número na caixa de texto
$ (this) = [sua caixa de texto]
fonte
Tente seguir o regex para remover aspas duplas da string.
fonte