2014-05-15 107 views
0

也许这是一个愚蠢的问题。但我还没有找到答案。 我有一些字符串。我想连接它们,然后在不同的时刻分割结果字符串。我想知道在.NET Framework中是否有可用的东西。 String的Join和Split方法工作得很好。问题是逃避分隔符。连接和拆分字符串

例如,我想使用“@”作为分隔符。如果我有“String1”,“Str @ ing2”和“String3”,我想获得“String1 @ Str @@ ing2 @ String3”。

有什么能做到我需要或做的事情我必须编写自己的功能吗?

谢谢。

+0

你会有一个空字符串,可能导致两个“@”彼此相邻吗? –

+0

你是否应该使用CSV库? –

+0

@ChrisHaas,我可以避免这种情况。没有CSV库。 – ufo

回答

2

就逃跑途中分离器。

var inputs = ["String1", "[email protected]", "String3"]; 
var joined = string.Join(inputs.Select(i => i.Replace("@", "@@")); 

您可以再拆单@字符。

var split = Regex.Split(joined, "(?<[email protected])@([email protected])"); 

这使用零宽度负回顾后/超前patterns前后@不是另一个@断言的字符。但是,对于@位于输入字符串的开头或结尾的情况,您应该运行一些测试。

+0

当我分裂? – ufo

+0

@ufo - 当你分裂时你想要发生什么? –

+0

仅在出现一个“@”时才会分割。你最后的编辑似乎回答了我的问题。谢谢。 – ufo

0

每个字符串呼叫.Replace("@", "@@")之前将它们传递给.Join