为什么这个替换功能不适用于字符串

时间:2014-12-28 18:23:03

标签: javascript node.js replace node-webkit

我有一个文件名,我分成几部分,但由于某种原因,有一个字符串,我无法替换一个字符

var filename = "first part - 5-10 - third part.txt"
var filenameparts = filename.split(" - ");
console.log(filenameparts);
console.log(filenameparts[0].substring(filenameparts[0].indexOf(' '))); //this prints fine

Array[3]
  0: "first part"
  1: "5-10"
  2: "third part.txt"
  length: 3
part

当我添加此行时,没有任何内容打印到控制台,并且在html中显示:

console.log(filenameparts[1].replace("-","/")); 

HTML:

Uncaught node.js Error 

TypeError: Cannot read property 'replace' of undefined

1 个答案:

答案 0 :(得分:1)

您问题中的代码不会导致您所描述的错误(请参阅下文),因此您需要查看其他地方。请注意,如果filename ,其中至少有一个" - "(在您的问题中确实如此,但可能您实际上是从某个地方获取该名称而不是使用一个文字字符串),你将获得一个只有split的一个条目的数组,所以你确实需要在你的filenameparts[1]行上有一个守卫,例如:

if (filenameparts.length > 1) {
    console.log(filenameparts[1].replace("-","/")); 
}

证明问题中的代码有效:

var filename = "first part - 5-10 - third part.txt"
var filenameparts = filename.split(" - ");
snippet.log(filenameparts);
snippet.log(filenameparts[0].substring(filenameparts[0].indexOf(' '))); //this prints fine
snippet.log(filenameparts[1].replace("-","/")); 
<!-- Script provides the `snippet` object, see http://meta.stackexchange.com/a/242144/134069 -->
<script src="http://tjcrowder.github.io/simple-snippets-console/snippet.js"></script>


这是一个社区Wiki,因为它真的是一个带有Stack Snippet的评论。