2011-03-02 66 views
19

請原諒我的懶惰。我知道,我可以通過閱讀了解這一點,但我想我會給你們中的一位C#天才贏得一些代表的機會。在C中取消引號#

我有一個數據文件INI文件格式,需要由一些C代碼和一些C#代碼讀取。 C代碼期望字符串值被引號括起來。 C#等價代碼使用了一些基礎類或者我無法控制的東西,但基本上它包含引號作爲輸出字符串的一部分。即的

MY_VAL="Hello World!" 

數據文件的內容讓我

"Hello World!" 
在我的C#字符串

,當我真正需要它含有

Hello World! 

我如何有條件地(在具有第一和最後一個字符「)刪除引號並獲取我想要的字符串內容。

Thankyou非常。

+0

幾年後,我仍然在這個簡單的問題上得到了投票和徽章(對於很多觀點)。精彩!我喜歡這個網站。 – AlastairG 2017-01-05 16:20:23

回答

51

在你的字符串使用與修剪「爲char:

.Trim('"') 
6

我通常所說的String.Trim()用於這一目的:

string source = "\"Hello World!\""; 
string unquoted = source.Trim('"'); 
0

如果你知道總會有」結尾和開頭,這將是最快的方法。

s = s.Substring(1, s.Length - 2); 
+0

這個問題明確地說「有條件地(在第一個和最後一個字符是」)「意味着在開始和結束時並不總是有一個引號 – AlastairG 2017-01-05 16:18:16

0

使用字符串替換功能或修剪功能。 如果你只是想刪除第一個和最後一個引號使用子字符串函數。

string myworld = "\"Hello World!\""; 
string start = myworld.Substring(1, (myworld.Length - 2)); 
1

就拿返回的字符串,並做了Trim('"');

4

我實現сheck該報價是雙方

public string UnquoteString(string str) 
{ 
    if (String.IsNullOrEmpty(str)) 
     return str; 

    int length = str.Length; 
    if (length > 1 && str[0] == '\"' && str[length - 1] == '\"') 
     str = str.Substring(1, length - 2); 

    return str; 
} 
1

我會建議使用replace()方法。

string str = "\"HelloWorld\""; 
string result = str.replace("\"", string.Empty); 
+0

如果我的理解是正確的,這也會從引導中字符串,第一個和最後一個字符也沒有條件引用。 – AlastairG 2017-01-05 16:19:29

1

作爲迷戀,這裏(這是我的;你無可奉告),你可能要考慮

.Trim(' ').Trim('"').Trim(' ') 

,使任何,包圍引號的字符串外的空格修剪,然後報價標記被剝離,最後,包含字符串的任何邊界空間都將被刪除。

  • 如果要保留包含的邊界空白,請省略最後的.Trim('')。
  • 如果有嵌入空格和/或引號,它們將被保留。機會是這樣的,並且不應該被刪除。
  • 做一些研究,看看Trim()對錶單提要和/或製表字符,邊界和嵌入等事物做些什麼。可能是一個和/或另一個Trim('')應該只是Trim()。
+0

更好的是,使用這個: .Trim('',''') – jakobbg 2017-09-06 08:42:19