.NET의 문자열에서 큰 따옴표 제거


100

일관되지 않은 형식의 HTML을 일치 시키려고하는데 큰 따옴표를 제거해야합니다.

흐름:

<input type="hidden">

목표:

<input type=hidden>

제대로 이스케이프하지 않았기 때문에 이것은 잘못된 것입니다.

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

빈 문자가 없기 때문에 이것은 잘못된 것입니다.

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

큰 따옴표를 빈 문자열로 대체하기위한 구문 / 이스케이프 문자 조합은 무엇입니까?

답변:


213

첫 번째 줄이 실제로 작동한다고 생각하지만 단일 줄을 포함하는 문자열에 대해 4 개의 따옴표가 필요하다고 생각합니다 (최소한 VB에서).

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

C #의 경우 백 슬래시를 사용하여 따옴표를 이스케이프해야합니다.

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

1
문자열 내에서 더 임베디드 따옴표가있는 경우 이것은 부작용이
Aadith Ramia에게

28

나는 내 생각이 이미 반복되는 것을 보지 못했기 때문에 string.TrimC #에 대한 Microsoft 문서에서 단순히 빈 공간을 자르는 대신자를 문자를 추가 할 수 있음을 살펴볼 것을 제안 합니다.

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

withOutQuotes가 "hello"대신""hello""


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

문자열에서 큰 따옴표 문자를 이스케이프하려면 \를 사용해야합니다.


2
문자열 내에 더 많은 따옴표가 포함 된 경우 부작용이 있습니다.
Aadith Ramia 2017-10-24

14

다음 중 하나를 사용할 수 있습니다.

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

...하지만 왜 그렇게하려고하는지 궁금 해요? 인용 된 속성 값을 유지하는 것이 좋은 습관이라고 생각 했습니까?


1
HTML Agility Pack을 사용하여 특정 링크를 찾은 다음 HTML 텍스트에서 해당 링크의 값을 제거해야합니다. HTML Agility Pack은 속성 값을 인용하지만 원본 HTML은 인용되지 않습니다. (그리고이 모든 것이 한 번의 테스트입니다.)
Mien조차도

문자열 내에 더 많은 따옴표가 포함 된 경우 부작용이 있습니다.
Aadith Ramia 2017-10-24


5

C # : "\""이므로s.Replace("\"", "")

vb / vbs / vb.net : ""따라서s.Replace("""", "")


문자열 내에 더 많은 인용 부호가 포함 된 경우 부작용이 있습니다
Aadith Ramia 2017 년



1

이것은 나를 위해 일했습니다.

//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

문자열 끝 (가운데가 아님)에서만 따옴표를 제거하고 문자열의 양쪽 끝에 공백이있을 수있는 경우 (예 : 뒤에 공백이있는 CSV 형식 파일을 구문 분석) 쉼표), Trim 함수를 두 번 호출해야합니다 ... 예 :

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( """", "" )

서로 옆에있는 두 개의 따옴표는 문자열 내부에서 의도 한 "문자로 작동합니다.


1
문자열 내에 더 많은 인용 부호가 포함 된 경우 부작용이 있습니다
Aadith Ramia 2017 년

0

단일 문자를 제거하려면 배열을 읽고 해당 문자를 건너 뛰고 배열을 반환하는 것이 더 쉽다고 생각합니다. vcard의 json을 사용자 정의 구문 분석 할 때 사용합니다. "인용 된"텍스트 식별자가있는 잘못된 json이기 때문입니다.

확장 메서드가 포함 된 클래스에 아래 메서드를 추가합니다.

  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();
  }

그런 다음이 확장 방법을 사용할 수 있습니다.

var text= myString.Remove('"');
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.