2017-11-13 17 views
2

정규식을 사용하여 이러한 변수의 내용을 반환 할 수 있기를 원합니다. 어떻게 match와 regex를 사용하여 변수의 내용을 반환 할 수 있습니까?

'use strict' 

const Telegraf = require('telegraf') 
const fs = require('fs') 

var ar1 = fs.readFileSync('folder/ar1.txt').toString() 
var ar2 = fs.readFileSync('folder/ar2.txt').toString() 
var ar3 = fs.readFileSync('folder/ar3.txt').toString() 

나는 사용하여 시도 :

app.hears(/\bar\d/i, (ctx) => { 
    ctx.reply(ctx.match[0]) 
    //Returns: "ar1" 
}) 

을하지만 이것은 단지 문자열이 아닌 변수의 내용을 반환합니다.

+0

당신이'경기 [1]'시도해 봤어 (A Map도 여기에 사용할 수 있습니다)? https://stackoverflow.com/questions/432493/how-do-you-access-the-matched-groups-in-a-javascript-regular-expression – CAustin

답변

1

여기에 eval을 사용할 수 있지만 제안하지 않습니다. 대신 변수를 매핑하는 것이 좋습니다.

const files = { 
    "ar1" : fs.readFileSync('folder/ar1.txt').toString(), 
    "ar2" : fs.readFileSync('folder/ar2.txt').toString(), 
    "ar3" : fs.readFileSync('folder/ar3.txt').toString() 
}; 

그런 다음 개체의 키에 응답하기 위해 찾을 문자열을 사용할 수

app.hears(/\b(a+)r\d/i, (ctx) => { 
    ctx.reply(files[ctx.match[0]]); 
    //now returns the file 
});