我有以下格式的字符串
“TestString 1 < ^> TestString 2 < ^> 测试String3
我希望将其拆分为“< ^>”字符串。
使用以下语句,它给出了我想要的输出
"TestString 1 <^> TestString 2 <^> Test String3"
.Split("<^>".ToCharArray(), StringSplitOptions.RemoveEmptyEntries)
但是如果我的字符串包含“&lt;” ,“&gt;”或者“^”文本中的任何地方,然后上面的split语句也会考虑
知道如何仅为“&lt; ^&gt;”进行拆分字符串?
答案 0 :(得分:14)
使用ToCharArray
,你说“分裂任何这些角色”;要拆分序列 "<^>"
,您必须使用接受string[]
的重载:
string[] parts = yourValue.Split(new string[]{"<^>"}, StringSplitOptions.None);
或者在C#3中:
string[] parts = yourValue.Split(new[]{"<^>"}, StringSplitOptions.None);
答案 1 :(得分:2)
编辑:正如其他人已经指出的那样:String.Split对你的用例有很好的重载。下面的答案仍然是正确的(如在工作中),但是 - 不是要走的路。
那是因为这个string.Split重载需要一个分隔符字符数组。他们每个人都分裂了字符串。
你想:Regex.Split
Regex regex = new Regex(@"<\^>");
string[] substrings = regex.Split("TestString 1 <^> TestString 2 <^> Test String3");
并且 - 旁注:
"<^>".ToCharArray()
实际上只是一种奇特的说法
new[]{'<', '^', '>'}
答案 2 :(得分:1)
尝试另一种重载的Split
方法:
public string[] Split(
string[] separator,
StringSplitOptions options
)
所以在你的情况下,它可能看起来像:
var result =
yourString.Split(new string[] {"<^>"},StringSplitOptions.RemoveEmptyEntries);
希望,这有帮助。