2011-05-22 48 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; 

你可能想要一些错误检查,但这看起来像一个版本Ÿ简单的任务,它不需要像正则表达式那样的任何东西。

相关问题