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.