Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
关于Java中trim()方法的查询_Java_String_Parsing_Trim - Fatal编程技术网

关于Java中trim()方法的查询

关于Java中trim()方法的查询,java,string,parsing,trim,Java,String,Parsing,Trim,我早些时候问了一个问题,但遭到了严厉的批评,所以我在这里再次提出这个问题。更简单,并重新措辞,以吸引那些可能关注我之前提问方式的人 背景 我正在解析一些HTML以获取信息。我把所有的东西都隔在一系列的行中,但是我想抓住的内容和后面的一堆空格。为了消除空格,我选择使用trim(),但我遇到了麻烦。我的代码的最后几行是测试: System.out.println("'" + someString + "'\n'" + someString.trim() + "'"); 结果是: 'Sophomor

我早些时候问了一个问题,但遭到了严厉的批评,所以我在这里再次提出这个问题。更简单,并重新措辞,以吸引那些可能关注我之前提问方式的人

背景 我正在解析一些HTML以获取信息。我把所有的东西都隔在一系列的行中,但是我想抓住的内容和后面的一堆空格。为了消除空格,我选择使用trim(),但我遇到了麻烦。我的代码的最后几行是测试:

System.out.println("'" + someString + "'\n'" + someString.trim() + "'");
结果是:

'Sophomore                                          '
'Sophomore                                          '
'  hello     '
'hello'
我担心我调用trim()的方式可能会有问题,因为我们都会时不时出错,所以我对它进行了如下测试:

String s = "   hello         ";
System.out.println("'" + s+ "'\n'" + s.trim() + "'");
结果是:

'Sophomore                                          '
'Sophomore                                          '
'  hello     '
'hello'
我的问题 我做错了什么?我想要的是“二年级”,而不是“二年级”

我期待您的精彩回答(提前感谢!)。

String.trim()
第一个字符前面的字符超过
\u0020
,最后一个字符后面的字符

这不足以删除所有可能的空白字符-Unicode定义了多个(代码点位于
\u0020
上方)将不与
.trim()
匹配的字符

也许你的空白字符不是你认为的那样

EDIT评论显示,额外的字符确实是“特殊”空白字符,特别是
\u00a0
,这是一种Unicode“不间断空格”。要使用普通空格替换这些空格,请使用:

str = str.replace('\u00a0', ' ');

源字符串中必须有非空白字符。 将以下内容添加到代码中,并查看打印的内容

for (char ch : someString.toCharArray()) {
     System.out.print(Integer.toHexString(ch) + " ");
}

你的问题是什么?不是我的反对票,而是需要链接。我想是的。但这是一个独立的。我不是在胡闹什么的。如果我的IDE一直被否决,我可能最终会发布一段视频。@OlinKirkland这不是给问题加上标签的有效理由。我想你需要看看你的字符串是什么编码的,顺便说一句,仅仅根据这些信息是不可能知道的谢谢你。可能就是这样。我已经想了一段时间了。他们可能是什么??如果它们不是空间,为什么它们看起来像它们。他没有向我们展示的关键是预处理的文本,比如显示错误的小测试用例数据。1+@OlinKirkland尝试在字符串上循环,并使用
codePointAt
查找每个字符的值。例如,它们可能是交替的unicode字符。@Hovercraft,您所说的预处理文本是什么意思?在我切掉字符串的开头和结尾之前的确切副本?@OlinKirkland你应该能够编写一个正则表达式(哦,讽刺的是…)用普通空格替换
\u0040
,然后像以前一样使用
.trim
。加入关于Alnitak答案的对话。我将在那里发布后续信息。