2016-02-12 373 views
1

我从服务器得到字符串响应,应该是1个空格。值如下所示:空字符串在末尾有“ u0000”

enter image description here

我用trim()TextUtils.isEmpty()在Android,但字符串描述看起来还是不为空。我检查过它是否等于“”或“”,但事实并非如此。 我该如何检查这个特殊的字符串?

我试图在字符串的末尾替换\u0000字符,看起来不工作太多。

+0

您是否尝试过'描述= description.replaceAll( “\\ S +”, “”);'? – Shark

+0

@Shark似乎这个工作,为什么? –

+1

'\ u0000'只是null结束符,它应该被'.trim()'或'whitespace regex i'建议去掉' – Shark

回答

1

尝试这样做

input = input.replaceAll("\\s+", ""); 

这样做是什么,走通整个字符串,并删除所有空格字符,其中包括{ ' ', '\r', '\t', '\n' ...}

,并不能保证去除ALL了他们在所有编码/字符集,但它通常会完成(大部分)工作。如果还有更多特殊/失踪案件,请将它们写下来,我们会将它们视为例外情况,而不是将它们包含在“全面解决方案”中。

该解决方案将删除字符串中的所有空格和空格。请尝试trim() ming和这看看有多接近,让你达到预期的最终结果。

+0

那么'trim()'是做什么的,它不应该删除空格吗?但是它并不在这种情况下 –

+0

否,'trim()'删除空格** FROM START和FINISH **表示第一个字符之前的空格和最后一个字符之后的空格。所以'“11 22 33 4”'变成'“11 22 33 4”' 编辑:真的,trim()'只是删除codepoints - '\ u0020' :) – Shark

+2

@JemshitIskenderov char 160不是空白,但一个不破的空间 – Hacketo

1

char 160是NO-BREAK SPACE in UTF-8字符集。您收到的string不是空的,但包含有效的字符。

在你认为这是空的string之前的第一件事是检查服务器试图告诉你什么。

如果你还想删除它,那么除了替换\u0000replace这个字符。

像这样的事:

description = description.replace(new String(new char[] {160}), ""); 
+0

这也适用,所以如果我用32个而不是160个以下的\ u0000空终止符,'trim()'会正常工作吗? –

+0

32是空间,修剪将起作用。 – ata