2012-06-03 66 views
0

这看起来有点不寻常,但很有可能只有一个项目需要从用户输入框。为了确定创建工作函数所输入的字符串之间的差异,我使用了regex.split;Regex.Split()如何只有一个项目时,只有一个存在?

string[] customlister = Regex.Split(Regex.Replace(exttypes, @"s", ""), ";"); 
foreach(string c in customlister){ 
    lister.Add(c); 
} 

exttypes为扩展的文件,例如:

.EXE; 。蝙蝠; .css

所有与分号分开。

如果列表中只有一个项目,即使以分号结尾,则列表程序列表也不会获得任何信息。

有什么明显的我错过了吗?

答: 添加\ S的不是s的regex.replace()

添加

exttypes = Settings.Default.customext;

+0

为什么string.Split()和string.Trim()不适合你? – Steve

+0

我需要删除所有空白字符的最终结果工作,所以这就是为什么我使用regex.replace,至于拆分,我选择使用统一的方法,你认为这将比string.split受益更多,而不是正则表达式。分裂? – Adsy2010

+0

你不能使用'exttypes.Split(new char [] {';'},StringSplitOptions.RemoveEmptyEntries);'? – Damith

回答

0

我假设你Regex.Replace(exttypes, @"s", "")调用的正则表达式应该是@"\s",不@"s"。前者将删除空格;后者将删除所有's'字符,将(例如)".css"扩展名转换为".c"

从MSDN文档上Regex.Split

如果模式没有在输入字符串中找到,返回值将包含一个元素,其值是原始输入字符串。

因此,错误可能在于您提供输入或解释结果的方式。 Split呼叫是正确的。

相关问题