【问题标题】:Javascript substring doesn't return the correct stringJavascript 子字符串不返回正确的字符串
【发布时间】:2016-01-25 15:30:42
【问题描述】:

我正在处理此文档http://www.dlib.org/dlib/november14/brook/11brook.html 中的文本,同时我注意到一些奇怪的东西。 我在看文章的开头,特别是这里:

Michelle Brook
The Content Mine
michelle@contentmine.org
...

(I am using jquery xpath)

var string=$("document").xpath("form[1]/table[3]/tr/td/table[5]/tr/td/table[1]/tr/td[2]/p[2]").html();
var new_string=string.substring(0,14);

我希望new_string 是“Michelle Brook”,但它是“Michelle Bro”。 为什么?是否有特定的字符导致 string.substring() 失败?

【问题讨论】:

  • 为什么不console.log() 字符串之前 调用.substring() 看看它真正包含什么?
  • 我怀疑有几个连续的空白实例在渲染时被折叠,但仍然存在于源字符串中。
  • for(var x=0;x<14;x++) console.log(string.CharAt(x));
  • @RobertMcKee 我想你在想.charCodeAt()
  • 嗯,这就是你的答案。你有一个换行符作为你的第一个字符。我猜.charCodeAt(1) 也是另一个奇怪的字符(10、13 或 8206)

标签: javascript jquery string substring


【解决方案1】:

在尝试对其进行子串化之前,请使用以下内容从字符串中删除所有前导和尾随空格:

var new_string=string.replace(/^\s*/, '').replace(/\s*$/, '').substring(0,14);

【讨论】:

  • 我明白了这个问题:你的代码是否删除了所有可以使 substring() 失败的字符?
  • 子字符串没有失败。
  • 使用该替换,在文档的不同部分我可以看到一些  词:为什么?我怎样才能删除它们?
  • 我建议使用 HTML 解析器而不是尝试使用 XPATH 来解析您的文档。
  • string.trim().substring(0,14); 更短
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-14
  • 2014-12-12
  • 1970-01-01
  • 2017-04-05
  • 2015-05-19
相关资源
最近更新 更多