2017-08-12 105 views
2

我正在研究一个windows应用程序,其中我从其中具有'\'的函数获取了一个名为'strData'的字符串的值。我想用'\'来分割那个字符串,但是我不知道为什么'Split'函数不起作用。为什么Split不能在我的代码中工作

string strData= "0101-0000046C\0\0\0"; //This Value comes from a function 
string[] strTemp = strData.Split('\\'); 
return strTemp[0]; 

'strTemp [0]'的值仍然是“0101-0000046C \ 0 \ 0 \ 0”。请帮我

+2

你*肯定*有一个在'strData' \字符?你真的很确定吗? – itsme86

+0

如果你只是有兴趣在\ 0之前得到字符串,然后使用_strData = strData.Substring(0,strData.IndexOf('\ 0'))_ – Steve

回答

4

你的数据被解释为一个非转义字符串:这意味着您的代码文件中的所有\0都会解析为值为0(值为零 - 字符)的ascii-char。

在你的情况下,你终于必须替换像这样的值零零字符: strData = strData.Replace("\0", "0\\");然后它的工作。

说明:此替换值零炭与数零炭和反斜杠。

至于说你要么必须将源字符串逃脱xxx\\0或在像这样与字符串声明的前面写一个@ - 符号:var x = @"xxx";(仅在理论上,第二种方法在这里并不因为你说你的工作价值从一个函数)。这在两种情况下都可以解决您的问题。

+0

谢谢你解决问题并理解问题。 –

+0

@enamur没有问题:)如果它帮助你,请不要忘记标记答案已解决,以帮助未来的人们(谁有同样的问题),以更好地确定解决方案。 – cramopy

0

码不正确,反斜杠零 \ 0“零字符” 如果你想真正的反斜杠,使用双\\

string strData= "0101-0000046C\\0\\0\\0"; //This Value comes from a function 
string[] strTemp = strData.Split('\\'); 
return strTemp[0]; 
+0

是的,你是对的,但在与其他字符串变量这个反斜杠和零点产生问题 –

0

使用@解释字符串字面

string strData= @"0101-0000046C\0\0\0"; 

\0是只有一个字符的字符串之前,所以添加@,以便其字面解释

相关问题