为什么Split不能在我的代码中工作
我正在研究一个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”。请帮我
你的数据被解释为一个非转义字符串:这意味着您的代码文件中的所有\0
都会解析为值为0(值为零 - 字符)的ascii-char。
在你的情况下,你终于必须替换像这样的值零零字符: strData = strData.Replace("\0", "0\\");
然后它的工作。
说明:此替换值零炭与数零炭和反斜杠。
至于说你要么必须将源字符串逃脱xxx\\0
或在像这样与字符串声明的前面写一个@
- 符号:var x = @"xxx";
(仅在理论上,第二种方法在这里并不因为你说你的工作价值从一个函数)。这在两种情况下都可以解决您的问题。
谢谢你解决问题并理解问题。 –
@enamur没有问题:)如果它帮助你,请不要忘记标记答案已解决,以帮助未来的人们(谁有同样的问题),以更好地确定解决方案。 – cramopy
码不正确,反斜杠零 \ 0“零字符” 如果你想真正的反斜杠,使用双\\
string strData= "0101-0000046C\\0\\0\\0"; //This Value comes from a function
string[] strTemp = strData.Split('\\');
return strTemp[0];
是的,你是对的,但在与其他字符串变量这个反斜杠和零点产生问题 –
使用@
解释字符串字面
string strData= @"0101-0000046C\0\0\0";
\0
是只有一个字符的字符串之前,所以添加@
,以便其字面解释
你*肯定*有一个在'strData' \字符?你真的很确定吗? – itsme86
如果你只是有兴趣在\ 0之前得到字符串,然后使用_strData = strData.Substring(0,strData.IndexOf('\ 0'))_ – Steve