.NET में एक स्ट्रिंग से डबल कोट्स को स्ट्रिप करें


99

मैं कुछ असंगत स्वरूपित HTML पर मिलान करने का प्रयास कर रहा हूं और कुछ दोहरे उद्धरण चिह्नों की आवश्यकता है।

वर्तमान:

<input type="hidden">

लक्ष्य:

<input type=hidden>

यह गलत है क्योंकि मैं इसे ठीक से नहीं बचा रहा हूँ:

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

यह गलत है क्योंकि रिक्त चरित्र चरित्र नहीं है (मेरी जानकारी के लिए):

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

एक खाली स्ट्रिंग के साथ दोहरे उद्धरणों को बदलने के लिए वाक्यविन्यास / एस्केप वर्ण संयोजन क्या है?

जवाबों:


212

मुझे लगता है कि आपकी पहली पंक्ति वास्तव में काम करेगी लेकिन मुझे लगता है कि आपको एक स्ट्रिंग के लिए चार उद्धरण चिह्नों की आवश्यकता है (वीबी में कम से कम):

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

C # के लिए आपको बैकस्लैश का उपयोग करके उद्धरण चिह्न से बचना होगा:

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

1
यह एक साइड इफेक्ट है अगर स्ट्रिंग के भीतर अधिक एम्बेडेड उद्धरण हैं
Aadith Ramia

27

मैंने अपने विचारों को पहले ही दोहराया नहीं देखा, इसलिए मैं सुझाव दूंगा कि आप string.TrimC # के लिए Microsoft दस्तावेज़ीकरण में देखें # आप खाली स्थानों को ट्रिम करने के बजाय ट्रिम किए जा सकने वाले वर्ण को जोड़ सकते हैं:

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

"hello"इसके बजाय withOutQuotes में परिणाम होना चाहिए""hello""


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

स्ट्रिंग में दोहरे उद्धरण वर्ण से बचने के लिए आपको \ _ का उपयोग करना होगा।


2
यह एक साइड इफेक्ट है अगर स्ट्रिंग के भीतर अधिक एम्बेडेड उद्धरण हैं
आदिथ रमिया

14

आप इनमें से किसी एक का उपयोग कर सकते हैं:

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

... लेकिन मैं उत्सुक हूं कि आप ऐसा क्यों करना चाहेंगे? मैंने सोचा था कि विशेषता मूल्यों को उद्धृत रखने के लिए यह अच्छा अभ्यास था?


1
मैं एक निश्चित लिंक खोजने के लिए HTML चपलता पैक का उपयोग कर रहा हूं, और फिर मुझे HTML पाठ से उस लिंक में एक मूल्य निकालने की आवश्यकता है। HTML चपलता पैक गुण मानों को उद्धृत करता है, लेकिन मूल HTML उद्धृत नहीं है। (और यह सब एक परीक्षण के लिए।)
यहां तक ​​कि मियां

यह एक साइड इफेक्ट है अगर स्ट्रिंग के भीतर अधिक एम्बेडेड उद्धरण हैं
आदिथ रमिया


5

c #:, "\""इस प्रकारs.Replace("\"", "")

vb / vbs / vb.net: ""इस प्रकारs.Replace("""", "")


यह एक साइड इफेक्ट है अगर स्ट्रिंग के भीतर अधिक एम्बेडेड उद्धरण हैं
आदिथ रमिया

3

आपको बैकस्लैश के साथ दोहरे उद्धरण से बचना होगा।

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

1
यह एक साइड इफेक्ट है अगर स्ट्रिंग के भीतर अधिक एम्बेडेड उद्धरण हैं
आदिथ रमिया


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 प्रारूप फ़ाइल पार्स करना जहां के बाद एक स्थान है अल्पविराम), तो आपको ट्रिम फ़ंक्शन को दो बार कॉल करने की आवश्यकता है ... उदाहरण के लिए:

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
यह एक साइड इफेक्ट है अगर स्ट्रिंग के भीतर अधिक एम्बेडेड उद्धरण हैं
आदिथ रमिया

0

यदि आप एक एकल चरित्र को हटाना चाहते हैं, तो मुझे लगता है कि केवल सरणियों को पढ़ना और उस चार को छोड़ना और सरणी को वापस करना आसान है। मैं इसका उपयोग तब करता हूं जब कस्टम पार्सिंग vcard के जोंस। जैसा कि "उद्धृत" पाठ पहचानकर्ताओं के साथ यह बुरा है।

अपने विस्तार के तरीकों से युक्त वर्ग में नीचे की विधि जोड़ें।

  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('"');
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.