Javascript 修改字符串中的for循环

Javascript 修改字符串中的for循环,javascript,Javascript,我有一个字符串,它包含一些代码。我想对它做些修改。我想用js修改一个for循环。 循环: "for i in 0..10 loop" 我希望它是: "for (var i=0; i<10; i++)" (var i=0;i根据我的评论,这里是一个简单的实现: var before = "for i in 0..10 loop"; var after = Translate(before); function Translate(command) { var tokens =

我有一个字符串,它包含一些代码。我想对它做些修改。我想用js修改一个for循环。 循环:

"for i in 0..10 loop"
我希望它是:

"for (var i=0; i<10; i++)"

(var i=0;i根据我的评论,这里是一个简单的实现:

var before = "for i in 0..10 loop";
var after = Translate(before);

function Translate(command) {
    var tokens = command.split(" ");
    if (tokens.length != 5)
        return "ERROR: invalid command (wrong number of tokens)";
    if (tokens[0] != "for" || tokens[2] != "in" || tokens[4] != "loop")
        return "ERROR: invalid command (syntax error)";
    var indices = tokens[3].split("..");
    if (indices.length != 2)
        return "ERROR: invalid command (invalid indices format)";
    var startIndex = parseInt(indices[0], 10);
    var endIndex = parseInt(indices[1], 10);
    if (isNaN(startIndex) || isNaN(endIndex))
        return "ERROR: invalid command (illegal indices)";
    var varName = tokens[1];
    return "for (var " + varName + "=" + startIndex + "; " + varName + "<" + endIndex + "; " + varName + "++)";
}
var before=“对于0..10循环中的i”;
var after=转换(之前);
函数转换(命令){
var tokens=command.split(“”);
if(tokens.length!=5)
返回“错误:无效命令(错误的令牌数)”;
if(在“| |令牌[4]!=”循环中“| |令牌[2]!=”的令牌[0]!=”)
返回“错误:无效命令(语法错误)”;
var指数=代币[3]。拆分(“…”);
如果(index.length!=2)
返回“错误:无效命令(无效索引格式)”;
var startIndex=parseInt(指数[0],10);
var endIndex=parseInt(索引[1],10);
if(isNaN(startIndex)| isNaN(endIndex))
返回“错误:无效命令(非法索引)”;
var varName=tokens[1];

return“for(var”+varName+”=“+startIndex+”;“+varName+”基于我的评论,这里是一个简单的实现:

var before = "for i in 0..10 loop";
var after = Translate(before);

function Translate(command) {
    var tokens = command.split(" ");
    if (tokens.length != 5)
        return "ERROR: invalid command (wrong number of tokens)";
    if (tokens[0] != "for" || tokens[2] != "in" || tokens[4] != "loop")
        return "ERROR: invalid command (syntax error)";
    var indices = tokens[3].split("..");
    if (indices.length != 2)
        return "ERROR: invalid command (invalid indices format)";
    var startIndex = parseInt(indices[0], 10);
    var endIndex = parseInt(indices[1], 10);
    if (isNaN(startIndex) || isNaN(endIndex))
        return "ERROR: invalid command (illegal indices)";
    var varName = tokens[1];
    return "for (var " + varName + "=" + startIndex + "; " + varName + "<" + endIndex + "; " + varName + "++)";
}
var before=“对于0..10循环中的i”;
var after=转换(之前);
函数转换(命令){
var tokens=command.split(“”);
if(tokens.length!=5)
返回“错误:无效命令(错误的令牌数)”;
if(在“| |令牌[4]!=”循环中“| |令牌[2]!=”的令牌[0]!=”)
返回“错误:无效命令(语法错误)”;
var指数=代币[3]。拆分(“…”);
如果(index.length!=2)
返回“错误:无效命令(无效索引格式)”;
var startIndex=parseInt(指数[0],10);
var endIndex=parseInt(索引[1],10);
if(isNaN(startIndex)| isNaN(endIndex))
返回“错误:无效命令(非法索引)”;
var varName=tokens[1];

return“for(var”+varName+“=”+startIndex+”;“+varName+”您可以使用正则表达式匹配来提取您感兴趣的部分

var string_to_match = 'for i in 0..10 loop',
    re = /for ([A-z]*) in (\d*)\.\.(\d*) loop/,
    data = re.exec(string_to_match);

// data contains:
// ["for i in 0..10 loop", "i", "0", "10"]

for(i = data[2]; i < data[3]; i++) {
    console.log(i);
}
var string_to_match='for i in 0..10循环',
re=/for(\d*)\.\(\d*)循环中的([A-z]*),
data=re.exec(字符串匹配);
//数据包括:
//[“对于0..10循环中的i”,“i”,“0”,“10”]
对于(i=数据[2];i<数据[3];i++){
控制台日志(i);
}

您可以使用正则表达式匹配来提取您感兴趣的部分

var string_to_match = 'for i in 0..10 loop',
    re = /for ([A-z]*) in (\d*)\.\.(\d*) loop/,
    data = re.exec(string_to_match);

// data contains:
// ["for i in 0..10 loop", "i", "0", "10"]

for(i = data[2]; i < data[3]; i++) {
    console.log(i);
}
var string_to_match='for i in 0..10循环',
re=/for(\d*)\.\(\d*)循环中的([A-z]*),
data=re.exec(字符串匹配);
//数据包括:
//[“对于0..10循环中的i”,“i”,“0”,“10”]
对于(i=数据[2];i<数据[3];i++){
控制台日志(i);
}

这里有一种方法,但可能不是最好的:

var str = "for i in 0..10 loop",
    str = str.replace("i in ", "(var i="),
    str = str.replace("..", "; i<"),
    str = str.replace(" loop", "; i++)");
console.log(str);
var str=“对于0..10循环中的i”,
str=str.replace(“i in”,“var i=”),

str=str.replace(“…”,“i这里有一种方法,但可能不是最好的:

var str = "for i in 0..10 loop",
    str = str.replace("i in ", "(var i="),
    str = str.replace("..", "; i<"),
    str = str.replace(" loop", "; i++)");
console.log(str);
var str=“对于0..10循环中的i”,
str=str.replace(“i in”,“var i=”),

str=str.replace(“…”,“i您可以尝试在(\d+)\(\d+)循环$
中为(.+)匹配此正则表达式
^,并将其替换为(var\1=\2;\1<\3;\1++)


例如,可以尝试在(\d+)\(\d+)循环$
中为(.+)匹配此正则表达式
^,并替换为(var\1=\2;\1<\3;\1++)的


例如,试一试…

这个for循环是否应该执行?为什么它在字符串中?假设模式是固定的,那么就不太复杂了-对于[start index]…[end index]中的[name of variable]loop-bolded是固定的单词。如果是这种情况,只需按空格分割并获取所需的内容。不,它不执行。我正在尝试将代码转换为js。不会
0..10
need
这也是我如何阅读它的,以及我最初的答案是如何编写的,但我想每个人都有自己的答案。这个for循环应该执行吗?为什么它在stri中ng?不是很复杂,假设模式是固定的-对于[start index]…[end index]中的[name of variable]循环-黑体是固定的词。如果是这样的话,就按空格分开,然后取你需要的东西。不,它没有执行。我正在尝试将代码转换为js。不会
0..10
need
这也是我读它的方式,以及我最初的答案是如何写的,但我想每个人都有自己的答案。非常感谢你的帮助。非常感谢你谢谢你的帮助。