C# 按不同的标记拆分字符串
如何用几个不同的符号分割字符串,例如C# 按不同的标记拆分字符串,c#,regex,string,split,C#,Regex,String,Split,如何用几个不同的符号分割字符串,例如c#字符串中的点和- string str = "sally-vikram.dean.sarah-ray"; 但无需将所有部件更换为同一标记: str = str.Replace("-", "."): 并按点分割,例如: string[] words = str.Split('.'); 要获得: sally vikram dean sarah ray 实际上可以获取一个值数组: string[] words = str.Split('.', '-');
c#
字符串中的点
和-
string str = "sally-vikram.dean.sarah-ray";
但无需将所有部件更换为同一标记:
str = str.Replace("-", "."):
并按点分割,例如:
string[] words = str.Split('.');
要获得:
sally
vikram
dean
sarah
ray
实际上可以获取一个值数组:
string[] words = str.Split('.', '-');
对于您的用例,regex()是一个很好的选择:
string[] words = Regex.Split(str, "[.-]");
注意:由于-
也用于定义类似a-z
的字符范围,因此最好将-
放在字符组的末尾。否则,只需将其转义,例如\-
如果您希望需要更多的分隔符和其他要求,发现正则表达式更具可读性,并且性能不是问题(regex.Split比String.Split等效值慢得多),那么这是最合适的方法。没问题,尽管我认为正则表达式在这种情况下有点过火,我认为正则表达式解决方案很好,可读性很强,可以很容易地扩展。性能不应该是个问题。一些基准测试告诉我,正则表达式比纯
string.Split()
操作慢10倍,这就是为什么我说它太过分了。正则表达式适用于许多情况。但是,当面对一个数量级较慢的东西时(甚至在测试之前,我都会猜到),为什么还要浪费时间在较慢的选项上呢?我觉得这不是一个真正的论点。实际速度差很可能与此无关。