以下字符串显示了497
的长度,而实际上是562
字符:
alert('[**BFI/KBFI**](http://aviationweather.gov/adds/metars/?station_ids=KBFI&std_trans=translated&chk_metars=on&hoursStr=most+recent+only&chk_tafs=on&submitmet=Submit): Boeing Field King County International Airport \u2022 **Observed:** 55 mins ago \u2022 **Wind:** 170\u00B0/S @ 12 kts \u2022 **Visibility:** 10.0mi/16.09km \u2022 **Sky (AGL):** Few clouds @ 1,800ft; Broken clouds @ 2,600ft; Overcast @ 3,600ft \u2022 **Temperature:** 10.6\u00B0C/51\u00B0F \u2022 **Dewpoint:** 6.7\u00B0C/44\u00B0F \u2022 **Pressure:** 29.70" Hg/1,006mb \u2022 **Conditions:** MVFR'.length);
相差65个字符,我认为这是由Unicode字符引起的,例如度符号
\u00B0
。我需要输出的长度显示为总字符文字;我怎样才能解决这个问题?
这是JSFiddle上的字符串。
最佳答案
所以...你有一个字符串。它具有一些“有趣的” Unicode。您正在将其传递给其他人的代码,该代码选择使用某些\ u转义符来表示它。一旦有了这些转义符,其他一些代码就会继续执行并拒绝它太长的时间,并计算转义符。
您不能通过向不良的Java解释器询问“长度”来解决此问题,因为在那时,那些Unicode字符实际上是单个字符。您需要知道其他代码进入并扩展为带有转义符的表示形式后的长度。
一个聪明的评论者建议JSON.stringify(str).length
可能是一个足够好的近似值。