Javascript 查找上一条导入语句的索引
我正在使用节点的Javascript 查找上一条导入语句的索引,javascript,regex,node.js,Javascript,Regex,Node.js,我正在使用节点的fs.readFileSync(file)读取文件。我需要找到导入语句最后一次出现的索引 我正在阅读的js文件将类似于: import React from 'react'; import { FlowRouter } from 'meteor/kadira:flow-router'; import { mount } from 'react-mounter'; import { AppLayout } from '../../ui/layouts/AppLayout'; imp
fs.readFileSync(file)
读取文件。我需要找到导入语句最后一次出现的索引
我正在阅读的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 />)
});
}
});
从“React”导入React;
从“meteor/kadira:flow router”导入{FlowRouter};
从'react mounter'导入{mount};
从“../ui/layouts/AppLayout”导入{AppLayout};
从“../../ui/pages/HomePage”导入主页;
FlowRouter.route(“/”{
姓名:'家',
行动(){
安装(应用布局){
内容:()
});
}
});
所以在这个特殊的例子中,我需要找到这个import语句的分号索引:importhomepage from'../../ui/pages/HomePage'代码>因为这是最后一个
我已经研究了str.lastIndexOf(searchValue[,fromIndex])
,但它将字符串作为searchValue
,在这种情况下,我需要传入一个正则表达式
看起来我需要一个正则表达式,它将反向查找
如何匹配并获取上次导入的索引?我想您要查找的是以import
开头的最后一行,然后在后面插入另一行。有几种方法
拼接和索引of
:
//来自的拼接代码http://stackoverflow.com/a/4314050/3832970
String.prototype.splice=函数(idx、rem、str){
返回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 homeport from'../ui/pages/HomePage'.\n\n\n\n FlowRouter.router('/,{\n name:'home',\n action(){\n mount(AppLayout,{\n content:});\n}\n});“;
var strt=input.lastIndexOf(“\nimport”);
strt=input.indexOf(“\n”,strt+1);
document.body.innerHTML=“+input.splice(strt+1,0,“从\'../../Example\';\n导入示例”)+”
匹配所有项并获取最后一项:input.Match(/^import.*/gm).pop()
-我没有注意:您需要上次导入的索引
-怎么办?或者var m=input.match(/^([\s\s]*\n)?import.*/);如果(m){document.body.innerHTML=m.index+(m[1]?m[1].长度:0);}
(Fiddle#2-)如此接近@WiktorStribiżew!检查此项并打开控制台:。你看到它是如何在上次导入之前添加新导入的了吗?我试图在最后一个之后添加它,所以,您需要在最后一个之后添加另一个Import
,对吗?见.补充说明。