2009-09-10 86 views
0

我有一個C#字符串「RIP-1234-STOP \ 0 \ 0 \ 0 \ b \ 0 \ 0 \ 0 ??? | B?Mp?\ 0 \ 0 \ 0「從調用返回到本機驅動程序。C# - 從第一個空終止符開始修剪字符串

如何從第一個空終止符'\ 0 \開始修剪所有字符。在這種情況下,我只想要「RIP-1234-STOP」。

謝謝。

回答

11

這是應該做的伎倆的方法

string TrimFromZero(string input) 
{ 
    int index= input.IndexOf('\0'); 
    if(index < 0) 
    return input; 

    return input.Substring(0,index); 
} 
+1

+1是唯一不會過度使用var關鍵字的答案。 – Guffa 2009-09-10 06:07:24

+0

heh,所以真的... – Philippe 2009-09-10 09:13:48

+1

好方法肯定。很難相信,使用'var'而不是'int'會導致可讀性降低。 – RKitson 2009-09-10 19:52:55

3

試試這個:

var input = "RIP-1234-STOP\0\0\0\b\0\0\0???|B?Mp?\0\0\0"; 
var firstNull = input.IndexOf('\0'); 
var output = input.Substring(0, firstNull); 

或者乾脆:

var output = input.Substring(0, input.IndexOf('\0')); 
+1

當然,如果找不到'\ 0',這個解決方案會拋出一個ArgumentOutOfRangeException。 – RKitson 2009-09-10 19:50:05

0

這工作太:

var input = "RIP-1234-STOP\0\0\0\b\0\0\0???|B?Mp?\0\0\0"; 
var split = input.Split('\0'); 
var output = split[0]; 
Assert.AreEqual("RIP-1234-STOP", output);