如何通过另一个字符串拆分字符串?

问题描述:

我有一个字符串格式如下如何通过另一个字符串拆分字符串?

“的TestString 1 < ^>的TestString 2 < ^>测试STRING3

,我想通过拆分” < ^>”字符串。

使用以下声明它给出我想要的输出

"TestString 1 <^> TestString 2 <^> Test String3" 
.Split("<^>".ToCharArray(), StringSplitOptions.RemoveEmptyEntries) 

但如果我的字符串包含“<”,“>”或“^”的文字则上述拆分声明的任何地方将考虑以及

任何想法如何分割只为“< ^>”字符串?

通过使用ToCharArray你的意思是“拆分任何这些字符”;对序列"<^>"必须使用重载拆分接受string[]

string[] parts = yourValue.Split(new string[]{"<^>"}, StringSplitOptions.None); 

或者在C#3:

string[] parts = yourValue.Split(new[]{"<^>"}, StringSplitOptions.None); 
+1

STRING3?我刚开始寻找一个新的未知类。错字虽然,对吧? :) – 2010-04-12 12:08:43

+0

@Benjamin - 我误解它作为源变量名称(格式可能更清晰...)。澄清为“yourValue” - 更好? – 2010-04-12 12:15:32

+0

当然。无论如何,从我+1反正,与正则表达式.Split是愚蠢的第一位.. – 2010-04-12 12:23:34

尝试另一个重载Split方法:

public string[] Split(
    string[] separator, 
    StringSplitOptions options 
) 

所以在你的情况下,它可能看起来像:

var result = 
    yourString.Split(new string[] {"<^>"},StringSplitOptions.RemoveEmptyEntries); 

希望,这有助于。

编辑:正如其他人指出的那样:String.Split对你的用例有很好的重载。下面的答案仍然正确(如在工作中),但是 - 不是要走的路。


这是因为这个string.Split重载需要一个分隔符数组。他们每个人分裂字符串。

你想:Regex.Split

Regex regex = new Regex(@"<\^>"); 
string[] substrings = regex.Split("TestString 1 <^> TestString 2 <^> Test String3"); 

和 - 阿里纳斯:

"<^>".ToCharArray() 

其实只是一个奇特的方式说

new[]{'<', '^', '>'} 
+0

你真的不需要在这里的正则表达式,但你应该逃避字符串的开始标志:''。 – Kobi 2010-04-12 12:10:06

+0

@Kobi:谢谢。我并没有真正期望这一点,并认为我只需要在字符组中逃避。试过了,你显然是正确的。修正了帖子。 – 2010-04-12 12:16:03

+0

恰恰相反 - 字符组是你通常不需要转义字符的地方。 – Kobi 2010-04-12 12:18:42