2016-07-29 61 views
1

不知道为什么2的情况下无法Splitstrab为何斯普利特(新的char [“\”])没有什么,我认为

string str = @"a\b"; 

var result = str.Split('\\'); // work (case 1) 

//var result = str.Split(new char['\\']); not work as what I want and will print a\b (case 2) 

foreach (var r in result) 
    Console.WriteLine(r); 
+0

我想你应该已经改变了叙述,但不是个案 - 因为现在它要使其难上加难知道哪个回答所指的情况下,1(旧)对案件1(新)VS情况下2 (旧)与案例2(新)。一般来说,不要进行编辑,使*无效*答案。 –

+0

@Damien_The_Unbeliever现在如何? – MichaelMao

+0

嗯,现在已经太晚了,但将来要记住 - 如果你编号了一些情况,不要在后面交换数字。通过一切手段来改变你的*叙述*,如果你弄糊涂了,或者改变标签在哪些标签上工作或不工作。正如我所说,如果我们不知道他们所指的编号方案的哪个*版本,那么如果他们已经开始使用您的编号方案,可能会让他们很难理解。 –

回答

7

new char['\\']是大小92的字符数组这是由于隐式转换从charint

int number = '\\'; // number is 92 
char[] array = new char['\\']; // char array of size 92 with default values 

这是因为如果你这样写道:

var result = str.Split(new char[92]); 

单个字符数组是这样写的:

var result = str.Split(new char[] { '\\' }); 
+1

“空”不适合它......但默认初始化会更好。 –

+0

@JeffMercado在写这个字之前,我犹豫了。我知道每个元素都是该类型的默认值。我会解决这个问题。 – user3185569

0

做这种工作方式:

string str = @"a\b"; 

String[] result = str.Split('\\'); // work (case 1) 
3

这是因为new char['\\']创建(int)'\\'长度的字符数组。如果你想要一个给定值的数组,你可以做new char[] { '\\' }甚至new[] { '\\' },如果你相信它足够可读的话

+0

“选项1不起作用,选项1不起作用” - 可能需要重写该位以使(某些)有意义。 –

+0

@Damien_The_Unbeliever你是对的,但这是不相关了,因为OP改变了问题 – slawekwin

+0

对不起。这是我的问题。我更新了OP – MichaelMao

0

new char[]是一个数组。使用

var result = str.Split(new char[] { '\\' });