2011-05-22 49 views
0

如何用引號括住單詞 例如: 美國,美國,與「美國」,「美國」,如何用引號括住單詞

+5

定義「單詞」。 「美國」對我來說似乎是兩個字。 – 2011-05-22 15:40:06

+0

我有像前一樣的字符串。 String s =「United States,US」 用字符串s1 =「'United States','US'替換此字符串 – Michael27 2011-05-22 15:41:17

+0

您是否打算在''''之間用引號括起部分字符串?你提供的樣本含糊不清,很顯然'美國'不是一個「單詞」 – 2011-05-22 15:44:42

回答

4

在你的情況

resultString = Regex.Replace(subjectString, @"\b[^,]+\b", "'$0'"); 

的工作,但你可能要多一點清楚地定義你的要求。

編輯:

現在你已經澄清了您的字符串總是分爲兩個部分(名稱和國家代碼),這可能會更好:

resultString = Regex.Replace(subjectString, @"^(.+),\s*([^,]+)$", "'$1', '$2'", RegexOptions.Multiline); 

這將改變多行字符串

United States, US 
Switzerland, CH 
BOLIVIA, PLURINATIONAL STATE OF, BO 

'United States', 'US' 
'Switzerland', 'CH' 
'BOLIVIA, PLURINATIONAL STATE OF', 'BO' 

(但是,如果您一次只將它應用於一行)也可以使用。

+1

這會打破例如與「文萊國家,和平之屋,無線電通信局」 - 請注意,這是官方名稱:http://en.wikipedia.org/wiki/Brunei。此外,還有其他各種陷阱,如「丹麥,丹麥王國」。如您所述,要求不明確。 – Piskvor 2011-05-22 16:01:14

+0

你的正則表達式產生的回報 - ''美國'','美國''''。我想你應該用'+'替換'*' – 2011-05-22 16:05:49

+0

@Piskvor 我從 得到國名http://www.iso.org/iso/english_country_names_and_code_elements – Michael27 2011-05-22 16:11:42

3
var quoted = myString.Replace("US", "'US'").Replace("United States", "'United States'"); 

對於簡單的任務,不需要正則表達式。

+0

其實正則表達式是必需的,因爲我有一個從txt文件中得到的字符串列表 – Michael27 2011-05-22 15:45:28

+0

如果這個字符串列表是List ,那麼使用foreach結合StringBuilder類。你會比正則表達式更好的表現。 – 2011-05-22 15:51:43

1

這裏有一個簡單的解決方案,使用字符串操作:

string s = "BOLIVIA, PLURINATIONAL STATE OF, BO"; 

裹單引號:

int lastComma = s.LastIndexOf(", "); 
s = String.Format("'{0}', '{1}'", s.Remove(lastComma), s.Substring(lastComma + 2)); 

如果你總是在字符串的結尾兩個字母,你甚至可以把它簡化進一步:

int lastComma = s.Length - 4; 

你可能想要一些錯誤檢查,但這看起來像一個版本Ÿ簡單的任務,它不需要像正則表達式那樣的任何東西。

相關問題