find最后一个导入语句的索引
我正在使用Node的fs.readFileSync(file)
读取fs.readFileSync(file)
。 我需要find最后一次导入语句的索引。
我正在阅读的js文件将如下所示:
import React from 'react'; import { FlowRouter } from 'meteor/kadira:flow-router'; import { mount } from 'react-mounter'; import { AppLayout } from '../../ui/layouts/AppLayout'; import HomePage from '../../ui/pages/HomePage'; FlowRouter.route('/', { name: 'home', action() { mount(AppLayout, { content: (<HomePage />) }); } });
所以在这种情况下,我需要find这个导入语句的分号索引: import HomePage from '../../ui/pages/HomePage';
因为这是最后一个。
我已经看了str.lastIndexOf(searchValue[, fromIndex])
但它需要一个string作为searchValue
,在这种情况下,我需要传入一个正则expression式。
似乎我需要一个正则expression式,将相反的方向查找。
我如何匹配并得到最后一次导入的索引?
我想你想find的是最后一行以import
开始,并在其后插入另一行。 有几种方法。
Splice& indexOf
:
// splice code from http://stackoverflow.com/a/4314050/3832970 String.prototype.splice = function(idx, rem, str) { return this.slice(0, idx) + str + this.slice(idx + Math.abs(rem)); }; var input = "import React from 'react';\nimport { FlowRouter } from 'meteor/kadira:flow-router';\nimport { mount } from 'react-mounter';\nimport { AppLayout } from '../../ui/layouts/AppLayout';\nimport HomePage from '../../ui/pages/HomePage';\n\nFlowRouter.route('/', {\n name: 'home',\n action() {\n mount(AppLayout, {\n content: (<HomePage />)\n });\n }\n});"; var strt = input.lastIndexOf("\nimport "); strt = input.indexOf("\n", strt+1); document.body.innerHTML = "<pre>" + input.splice(strt+1, 0, "import Example from \'../../example\';\n") + "</pre>";