Java – 从String中删除\ u0000

我正在使用Twitter API,我有以下字符串,这让我感到Proyecto de ingeniera comercial, actual Profesora de matemáticas \u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000Enseña Chile
我想将它存储在PostgreSql中,但是不接受\u0000 ,所以我想替换它。
我尝试使用string= string.replaceAll("\\u0000", ""); 但它不起作用。 我得到以下内容

 String json = TwitterObjectFactory.getRawJSON(user); System.out.println(json); json = json.replaceAll("\\u0000", ""); System.out.println(json); 

输出(只有重要部分)

 Proyecto de ingeniera comercial, actual Profesora de matemáticas \u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000Enseña Chile Proyecto de ingeniera comercial, actual Profesora de matemáticas \u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000Enseña Chile 

如果我将该部分放在java中的String中,替换工作,但如果我把它放在一个文本文件中或我直接读取它为Twitter它不起作用
所以我的问题是,如何从字符串中替换\ u0000?
顺便说一句,完整的字符串就是这个

 {"utc_offset":null,"friends_count":83,"profile_image_url_https":"http://sofzh.miximages.com/java/3a8455cd94045fa6980402add14796a9_normal.jpg","listed_count":1,"profile_background_image_url":"http://sofzh.miximages.com/java/bg.png","default_profile_image":false,"favourites_count":0,"description":"Proyecto de ingeniera comercial, actual Profesora de matemáticas \u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000Enseña Chile","created_at":"Sat May 28 14:24:06 +0000 2011","is_translator":false,"profile_background_image_url_https":"http://sofzh.miximages.com/java/bg.png","protected":false,"screen_name":"Fsquadritto","id_str":"306825274","profile_link_color":"0084B4","is_translation_enabled":false,"id":306825274,"geo_enabled":false,"profile_background_color":"C0DEED","lang":"es","profile_sidebar_border_color":"C0DEED","profile_location":null,"profile_text_color":"333333","verified":false,"profile_image_url":"http://sofzh.miximages.com/java/3a8455cd94045fa6980402add14796a9_normal.jpg","time_zone":null,"url":null,"contributors_enabled":false,"profile_background_tile":false,"entities":{"description":{"urls":[]}},"statuses_count":2,"follow_request_sent":false,"followers_count":36,"profile_use_background_image":true,"default_profile":true,"following":false,"name":"Fiorella Squadritto","location":"","profile_sidebar_fill_color":"DDEEF6","notifications":false,"status":{"in_reply_to_status_id_str":null,"in_reply_to_status_id":null,"possibly_sensitive":false,"coordinates":null,"created_at":"Fri Oct 12 17:40:35 +0000 2012","truncated":false,"in_reply_to_user_id_str":null,"source":"Instagram","retweet_count":1,"retweeted":false,"geo":null,"in_reply_to_screen_name":null,"entities":{"urls":[{"display_url":"instagr.am/p/QsOQxTNfvQ/","indices":[49,69],"expanded_url":"http://instagr.am/p/QsOQxTNfvQ/","url":"http://t.co/GKziME7N"}],"hashtags":[{"indices":[24,34],"text":"eduinnova"}],"user_mentions":[{"indices":[35,47],"screen_name":"ensenachile","id_str":"57099132","name":"Enseña Chile","id":57099132}],"symbols":[]},"id_str":"256811615171792896","in_reply_to_user_id":null,"favorite_count":1,"id":256811615171792896,"text":"Amando las matemáticas! #eduinnova @ensenachile http://t.co/GKziME7N","place":null,"contributors":null,"lang":"es","favorited":false}} 

 string = string.replace("\u0000", ""); // removes NUL chars string = string.replace("\\u0000", ""); // removes backslash+u0000 

具有u-escaping的字符在java源代码级别完成。 例如“class”是:

 public \u0063lass C { 

你也不需要正则表达式。

replaceAll的第一个参数是一个正则表达式,Java正则表达式引擎理解\uNNNN转义为

 json.replaceAll("\\u0000", "") 

将搜索正则表达式 \u0000 ,它匹配Unicode NUL字符(U + 0000)的实例, 而不是实际字符串\u0000实例。 如果要匹配字符串\u0000则需要使用正则表达式\\u0000 ,这反过来表示Java字符串文字"\\\\u0000"

 json.replaceAll("\\\\u0000", "") 

或者更简单地说,使用replace (其第一个参数是文字字符串而不是正则表达式)而不是replaceAll

 json.replace("\\u0000", "")