2016-11-10 67 views
-2

我有这样的字符串:string ip = "192.168.10.30 | SomeName"。 我想通过|(包括空格分割它有了这个代码是不可能的不幸:。如何通过多个字符分割字符串?

string[] address = ip.Split(new char[] {'|'}, StringSplitOptions.RemoveEmptyEntries); 

因为这会导致"192.168.10.30 "我知道我可以添加.Trim()address[0]但事实是否真的正确进场?

简单地增加空间(' | ')的搜索模式给了我一个

无法识别的转义序列

+2

您可能需要使用:https://msdn.microsoft.com/en-us/library/8yttk7sy(v= vs.110).aspx –

+1

你可以使用这种模式的正则表达式。 '(? \ d {1,3} \。\ d {1,3} \。\ d {1,3} \。\ d {1,3})* \ | *(? \ S *)'。例如为了得到ip写'regex.Match(input).Groups [“ip”]'并且获得名字写名字而不是ip –

回答

6

您可以通过字符串分割,而不是性格:

var result = ip.Split(new string[] {" | "}, StringSplitOptions.RemoveEmptyEntries); 
+2

'char [] {'|',''}'方法更健壮,因为它涵盖了缺少空格和空条目的情况(可能与OP有关或可能不相关,但值得了解) – Konamiman

2

Split方法接受字符数组,因此您可以在该数组中指定第二个字符。由于您使用的是洁具RemoveEmptyEntries,这些空间将从最终结果中删除。

使用这样的:

string[] address = ip.Split(new char[] { '|',' '}, StringSplitOptions.RemoveEmptyEntries); 

您将在数组中获得两项

"192.168.10.30"SomeName

-1
String ip = "192.168.10.30 | SomeName"; 
    ip=ip.replaceAll(" ", ""); 
    String[] address = ip.split("\\|"); 

这应该会给你想要的结果。它会replayce所有空格分割

0

之前这可能做的伎俩为您

string[] address = ip.Split(new char[] { '|' }, StringSplitOptions.RemoveEmptyEntries).Select(s => s.Trim()).ToArray(); 
相关问题