Retire as aspas duplas de uma string em .NET


98

Estou tentando fazer a correspondência em algum HTML formatado de forma inconsistente e preciso retirar algumas aspas duplas.

Atual:

<input type="hidden">

O objetivo:

<input type=hidden>

Isso está errado porque não estou escapando dele corretamente:

s = s.Replace ("" "," ");

Isso está errado porque não há nenhum caractere em branco (que eu saiba):

s = s.Replace('"', '');

O que é sintaxe / combinação de caracteres de escape para substituir aspas duplas por uma string vazia?

Respostas:


211

Acho que sua primeira linha realmente funcionaria, mas acho que você precisa de quatro aspas para uma string contendo uma única (em VB, pelo menos):

s = s.Replace("""", "")

para C #, você teria que escapar as aspas usando uma barra invertida:

s = s.Replace("\"", "");

1
isso tem um efeito colateral se houver mais aspas embutidas na string
— Aadith Ramia,

27

Ainda não vi meus pensamentos repetidos, então vou sugerir que você olhe na string.Trimdocumentação da Microsoft para C #, você pode adicionar um caractere a ser cortado em vez de simplesmente cortar os espaços vazios:

string withQuotes = "\"hellow\"";
string withOutQotes = withQuotes.Trim('"');

deve resultar em withOutQuotes sendo em "hello"vez de""hello""


26
s = s.Replace("\"", "");

Você precisa usar \ para escapar do caractere de aspas duplas em uma string.


2
isso tem um efeito colateral se houver mais aspas incorporadas na string
— Aadith Ramia

14

Você pode usar um destes:

s = s.Replace(@"""","");
s = s.Replace("\"","");

... mas fico curioso para saber por que você faria isso? Achei que era uma boa prática manter os valores dos atributos entre aspas.


1
Estou usando o HTML Agility Pack para encontrar um determinado link e, em seguida, preciso remover um valor desse link do texto HTML. O HTML Agility Pack cita os valores de atributo, mas o HTML original não está entre aspas. (E tudo isso para um teste.)
— Even Mien

isso tem um efeito colateral se houver mais aspas incorporadas na string
— Aadith Ramia


5

c #:, "\""portantos.Replace("\"", "")

vb / vbs / vb.net: ""portantos.Replace("""", "")


isso tem um efeito colateral se houver mais aspas incorporadas na string
— Aadith Ramia

3

Você tem que escapar das aspas duplas com uma barra invertida.

s = s.Replace("\"","");

1
isso tem um efeito colateral se houver mais aspas incorporadas na string
— Aadith Ramia


1

Isso funcionou para mim

//Sentence has quotes
string nameSentence = "Take my name \"Wesley\" out of quotes";
//Get the index before the quotes`enter code here`
int begin = nameSentence.LastIndexOf("name") + "name".Length;
//Get the index after the quotes
int end = nameSentence.LastIndexOf("out");
//Get the part of the string with its quotes
string name = nameSentence.Substring(begin, end - begin);
//Remove its quotes
string newName = name.Replace("\"", "");
//Replace new name (without quotes) within original sentence
string updatedNameSentence = nameSentence.Replace(name, newName);

//Returns "Take my name Wesley out of quotes"
return updatedNameSentence;

1

Se você deseja apenas retirar as aspas das extremidades da string (não do meio), e há uma chance de que possa haver espaços em qualquer uma das extremidades da string (ou seja, analisando um arquivo de formato CSV onde há um espaço após o vírgulas), então você precisa chamar a função Trim duas vezes ... por exemplo:

string myStr = " \"sometext\"";     //(notice the leading space)
myStr = myStr.Trim('"');            //(would leave the first quote: "sometext)
myStr = myStr.Trim().Trim('"');     //(would get what you want: sometext)

0
s = s.Replace( """", "" )

Duas aspas uma ao lado da outra funcionarão como o caractere "pretendido quando dentro de uma string.


1
isso tem um efeito colateral se houver mais aspas incorporadas na string
— Aadith Ramia

0

se você gostaria de remover um único caractere, acho que é mais fácil simplesmente ler as matrizes e pular esse caractere e retornar a matriz. Eu o uso quando analisa o json do vcard. pois é JSON inválido com identificadores de texto "entre aspas".

Adicione o método abaixo a uma classe que contém seus métodos de extensão.

  public static string Remove(this string text, char character)
  {
      var sb = new StringBuilder();
      foreach (char c in text)
      {
         if (c != character)
             sb.Append(c);
      }
      return sb.ToString();
  }

você pode então usar este método de extensão:

var text= myString.Remove('"');
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.