如何去除 字符串里的 \0\0

时间:2023-01-04 17:20:26
比如:
 

string s = "sadfasd\0\0\0\0\0fsadfsdfasdf";
            string sm=s.Trim();
            string sn = s.Trim('\0');
            sn = s.Replace('\0', new char());



上面的代码都没效果。。~~~ 不知道如何弄了。

19 个解决方案

#1


Replace("\0", "");  

#2


str.Replace('\0'.ToString(), string.Empty);
   

#3


sn = s.Replace("\0", "");

#4


sn = s.Replace("\0", "");

#5


str= s.Replace("\0", "");

#6


谢谢各位的回答,应该是我把问题描述简单了。
实际情况是 我会拿到 一个json的数据包(txt文件),里面有很多 \0\0\0 , 这个字符会导致反序列化出错。如果没有 \0\0这种字符,就能正确反序列化。
var jsonData = System.IO.File.ReadAllText(folder + "\\data.json");
 jsonData = jsonData.Replace(”\0“, string.Empty);
JsonConvert.DeserializeObject<List<Core.AppModel.AppSite>>(jsonData);
这样写的Replace方式没有作用。\0并没有替换掉。

#7


引用 2 楼 starfd 的回复:
str.Replace('\0'.ToString(), string.Empty);
   


版主大大,,你会再来看一眼么。。。

#8


Replace,\0应该已经去掉了,断点调试下,可能是\t或者\r,不过你这种方式获取json好像不靠谱

#9


str= s.Replace("\\0", "");
多加一个\试试

#10


来看了……
string s = "sadfasd\0\0\0\0\0fsadfsdfasdf";
s = s.Replace('\0'.ToString(), string.Empty);
Console.WriteLine(s);

\0本来就是什么都没有……
LZ你这是在忽悠大家……

#11


你最好把 data.json 放到云盘上!
这样就可使我们观察到真实情况(调试其中观察到的是有出入的)

#12


你最好把 data.json 放到云盘上!
这样就可使我们观察到真实情况(调试其中观察到的是有出入的)

#13


引用 8 楼 zq1564171310 的回复:
Replace,\0应该已经去掉了,断点调试下,可能是\t或者\r,不过你这种方式获取json好像不靠谱


我自己当然断点调试了,就是没有去掉。第一次遇到这么诡异的问题,要不我也不来求助了。
 没有\t ,\r. 我自己把json数据里的  \0\0 手工删除掉,就正常了。但不知为何代码就是去不掉。

#14


换成这样,肯定ok
s = s.Replace(@"\0", "");

#15


引用 10 楼 starfd 的回复:
来看了……
string s = "sadfasd\0\0\0\0\0fsadfsdfasdf";
s = s.Replace('\0'.ToString(), string.Empty);
Console.WriteLine(s);

\0本来就是什么都没有……
LZ你这是在忽悠大家……


部分Json, (公司内不能外传文件,只能贴部分数据)
我没有忽悠你们啊

{"id":"301194_L850P2B_3085","itemId":3085,"show":true,"siteId":"301194_L850P2B","status":"finished","value":"8/301194_L850P2B/83/3085/As Built Photos Pre 18_1.jpg,8/301194_L850P2B/83/3085/As Built Photos Pre 18_2.jpg"},{"id":"301194_L850P2B_4207","itemId":4207,"show":true,"siteId":"301194_L850P2B","status":"finished","value":"true"},{"id":"301194_L850P2B_3089","itemId":3089,"show":true,"siteId":"301194_L850P2B","status":"finished","value":"021HPR10F6013652,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0022HEK10F4001489,21023166774ME9000734,21023166774ME9000721,21023166774ME9000812"},{"id":"301194_L850P2B_4203","itemId":4203,"show":true,"siteId":"301194_L850P2B","status":"finished","value":"8/301194_L850P2B/85/4203/Speed Test_1.jpg,8/301194_L850P2B/85/4203/Speed Test_2.jpg,8/301194_L850P2B/85/4203/Speed Test_3.jpg,8/301194_L850P2B/85/4203/Speed Test_4.jpg,8/301194_L850P2B/85/4203/Speed Test_5.jpg,8/301194_L850P2B/85/4203/Speed Test_6.jpg"},

#16


引用 9 楼 BitCoffee 的回复:
str= s.Replace("\\0", "");
多加一个\试试


谢谢,这就是答案。高手啊,一针见血。

#17


要知道斜杠原本就是以字符串形式存在于文件中,不是你所理解的转移符,这样去考虑问题就迎刃而解了。

#18


引用 17 楼 ajianchina 的回复:
要知道斜杠原本就是以字符串形式存在于文件中,不是你所理解的转移符,这样去考虑问题就迎刃而解了。


一开始只是想到了 \0 它是个 char ....自己理解的不透彻啊,学习了。

#19


都是高手啊  如何去除 字符串里的 \0\0

#1


Replace("\0", "");  

#2


str.Replace('\0'.ToString(), string.Empty);
   

#3


sn = s.Replace("\0", "");

#4


sn = s.Replace("\0", "");

#5


str= s.Replace("\0", "");

#6


谢谢各位的回答,应该是我把问题描述简单了。
实际情况是 我会拿到 一个json的数据包(txt文件),里面有很多 \0\0\0 , 这个字符会导致反序列化出错。如果没有 \0\0这种字符,就能正确反序列化。
var jsonData = System.IO.File.ReadAllText(folder + "\\data.json");
 jsonData = jsonData.Replace(”\0“, string.Empty);
JsonConvert.DeserializeObject<List<Core.AppModel.AppSite>>(jsonData);
这样写的Replace方式没有作用。\0并没有替换掉。

#7


引用 2 楼 starfd 的回复:
str.Replace('\0'.ToString(), string.Empty);
   


版主大大,,你会再来看一眼么。。。

#8


Replace,\0应该已经去掉了,断点调试下,可能是\t或者\r,不过你这种方式获取json好像不靠谱

#9


str= s.Replace("\\0", "");
多加一个\试试

#10


来看了……
string s = "sadfasd\0\0\0\0\0fsadfsdfasdf";
s = s.Replace('\0'.ToString(), string.Empty);
Console.WriteLine(s);

\0本来就是什么都没有……
LZ你这是在忽悠大家……

#11


你最好把 data.json 放到云盘上!
这样就可使我们观察到真实情况(调试其中观察到的是有出入的)

#12


你最好把 data.json 放到云盘上!
这样就可使我们观察到真实情况(调试其中观察到的是有出入的)

#13


引用 8 楼 zq1564171310 的回复:
Replace,\0应该已经去掉了,断点调试下,可能是\t或者\r,不过你这种方式获取json好像不靠谱


我自己当然断点调试了,就是没有去掉。第一次遇到这么诡异的问题,要不我也不来求助了。
 没有\t ,\r. 我自己把json数据里的  \0\0 手工删除掉,就正常了。但不知为何代码就是去不掉。

#14


换成这样,肯定ok
s = s.Replace(@"\0", "");

#15


引用 10 楼 starfd 的回复:
来看了……
string s = "sadfasd\0\0\0\0\0fsadfsdfasdf";
s = s.Replace('\0'.ToString(), string.Empty);
Console.WriteLine(s);

\0本来就是什么都没有……
LZ你这是在忽悠大家……


部分Json, (公司内不能外传文件,只能贴部分数据)
我没有忽悠你们啊

{"id":"301194_L850P2B_3085","itemId":3085,"show":true,"siteId":"301194_L850P2B","status":"finished","value":"8/301194_L850P2B/83/3085/As Built Photos Pre 18_1.jpg,8/301194_L850P2B/83/3085/As Built Photos Pre 18_2.jpg"},{"id":"301194_L850P2B_4207","itemId":4207,"show":true,"siteId":"301194_L850P2B","status":"finished","value":"true"},{"id":"301194_L850P2B_3089","itemId":3089,"show":true,"siteId":"301194_L850P2B","status":"finished","value":"021HPR10F6013652,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0022HEK10F4001489,21023166774ME9000734,21023166774ME9000721,21023166774ME9000812"},{"id":"301194_L850P2B_4203","itemId":4203,"show":true,"siteId":"301194_L850P2B","status":"finished","value":"8/301194_L850P2B/85/4203/Speed Test_1.jpg,8/301194_L850P2B/85/4203/Speed Test_2.jpg,8/301194_L850P2B/85/4203/Speed Test_3.jpg,8/301194_L850P2B/85/4203/Speed Test_4.jpg,8/301194_L850P2B/85/4203/Speed Test_5.jpg,8/301194_L850P2B/85/4203/Speed Test_6.jpg"},

#16


引用 9 楼 BitCoffee 的回复:
str= s.Replace("\\0", "");
多加一个\试试


谢谢,这就是答案。高手啊,一针见血。

#17


要知道斜杠原本就是以字符串形式存在于文件中,不是你所理解的转移符,这样去考虑问题就迎刃而解了。

#18


引用 17 楼 ajianchina 的回复:
要知道斜杠原本就是以字符串形式存在于文件中,不是你所理解的转移符,这样去考虑问题就迎刃而解了。


一开始只是想到了 \0 它是个 char ....自己理解的不透彻啊,学习了。

#19


都是高手啊  如何去除 字符串里的 \0\0

#20