Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 按不同的标记拆分字符串_C#_Regex_String_Split - Fatal编程技术网

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倍,这就是为什么我说它太过分了。正则表达式适用于许多情况。但是,当面对一个数量级较慢的东西时(甚至在测试之前,我都会猜到),为什么还要浪费时间在较慢的选项上呢?我觉得这不是一个真正的论点。实际速度差很可能与此无关。