Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/445.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
Javascript"&引用;。返回1而不是0的长度_Javascript_String - Fatal编程技术网

Javascript"&引用;。返回1而不是0的长度

Javascript"&引用;。返回1而不是0的长度,javascript,string,Javascript,String,好吧,我被这个问题难住了。 我从javascript库中获取字符串值。我调用myStringVar=myStringVar.trim()但是当我调用myStringVar.substring(0,1)时,它会给我一个空字符串。当我调用var arr=myStringVar.split(“”)数组中的第一个元素是和空字符串,当我调用arr[0].trim().length时,它返回1而不是零 我错过什么了吗 编辑 在注释和响应之后,我已经能够将问题归结为字符串开头是否存在非可视unicode字符

好吧,我被这个问题难住了。 我从javascript库中获取字符串值。我调用
myStringVar=myStringVar.trim()
但是当我调用
myStringVar.substring(0,1)
时,它会给我一个空字符串。当我调用
var arr=myStringVar.split(“”)
数组中的第一个元素是和空字符串,当我调用arr[0].trim().length时,它返回1而不是零

我错过什么了吗

编辑 在注释和响应之后,我已经能够将问题归结为字符串开头是否存在非可视unicode字符。现在,我将尝试找到一种从字符串中删除这些字符的方法……或者更好地提取字符串中感兴趣的部分。
感谢您的帮助。

最可能的答案是字符串中有一些不可见的Unicode字符(例如,
“——”
,U+2063不可见分隔符)。
对于用户(或程序员)来说,只包含这样一个字符的字符串看起来像一个空字符串,但实际上长度为1,因为它确实包含一个字符


测试这种情况的一种简单方法是使用获取字符串中字符的Unicode字符代码。然后,您可以在Unicode表(例如)中查找该值,该表会告诉您字符串中是否有不可见字符。

最可能的答案是字符串中有一些不可见的Unicode字符(例如,
“——”
,U+2063不可见分隔符)。
对于用户(或程序员)来说,只包含这样一个字符的字符串看起来像一个空字符串,但实际上长度为1,因为它确实包含一个字符


测试这种情况的一种简单方法是使用获取字符串中字符的Unicode字符代码。然后,您可以在Unicode表(如)中查找该值,该表会告诉您字符串中是否有不可见字符。

请尝试
string.charCodeAt(0)
。上面说什么?(我怀疑您的字符串中可能有一些不可见的Unicode字符)请尝试
string.charCodeAt(0)
。上面说什么?(我怀疑你的字符串中可能有一些看不见的Unicode字符)你的解释很可能,但如果是真的——
看不见的分隔符
s似乎正是
trim()
应该摆脱的那种东西。@ChristianTernus我想
trim()
只会删除空白,虽然属于“通用标点符号”的范畴,但没有任何类型的Unicode空白。至少在Chrome中,
trim()
不会移除
不可见的分隔符
。@ChristianTernus trim不会移除不可见的分隔符。它删除了列表中的所有内容:,其中“其他类别”包含以下字符(所有可见的空白):。它还删除了换行符、carraige返回符、行分隔符和段落分隔符,但该列表是详尽的。与此问题无关,但为了进一步讨论trim()-它也不会删除不间断空格(),这意味着带有此空格的字符串似乎只有一个空格,因此有可能被修剪。trim()但即使在.trim()实现之后,nbsp仍将保留。@gavgrif
trim()
确实删除了不间断空格。你的解释很可能是正确的,但如果它是真的,我会很恼火--
不可见分隔符
s似乎正是
trim()
应该去掉的那种东西。@ChristianTernus我想
trim()
仅删除空白,但属于“通用标点符号”类别,而不是任何类型的Unicode空白。至少在Chrome中,
trim()
不会移除
不可见的分隔符
。@ChristianTernus trim不会移除不可见的分隔符。它删除了列表中的所有内容:,其中“其他类别”包含以下字符(所有可见的空白):。它还删除了换行符、carraige返回符、行分隔符和段落分隔符,但该列表是详尽的。与此问题无关,但为了进一步讨论trim()-它也不会删除不间断空格(),这意味着带有此空格的字符串似乎只有一个空格,因此有可能被修剪。trim()但即使在.trim()实现之后,nbsp仍将保持不变。@gavgrif
trim()
会删除不间断的空格。