节点.JS逐行读取字符串
Node.JS read a string line by line
我正在使用 Node.Js,并使用以下代码块从数据库位置提取字符串,去除某些垃圾并将其设置为统一,以便我稍后可以使用此信息更新另一个表。
jsUpdateCon.query('SELECT FileContent FROM codeFile WHERE ID = ?',[msg[1]], function(err, result){
if (err) throw err;
str = result[0].FileContent;
var firstInstance = str.search(/=/) + 2;
var lastInstance = str.lastIndexOf('''') + 1;
str = str.substring(firstInstance, lastInstance);
str = str.replace(/''n''/g, "");
str = str.replace(/'#(.*)/g, "");
str = str.replace(/'n's*'n/g, "'n");
str = str.replace(/snippet /g, "'nsnippet ");
str = str.replace(/^(?:'t)/gm, "");
console.log(str);
});
下面是 console.log(str);
的输出示例
snippet cfabort
<cfabort>
snippet cfargument
<cfargument name='"${1:ArgName}'" type='"${2:any}'" default='"${3:DefaultValue}'" hint='"${4:hint about this argument}'">
snippet cfbreak
<cfbreak>
snippet cfcase
<cfcase value='"${1:${SELECTED_TEXT:<!--- code --->}}'">
${0}
</cfcase>
snippet cfcatch
<cfcatch>
${0}
</cfcatch>
snippet cfcatch:type
<cfcatch type='"${1:any}'">
${0}
</cfcatch>
snippet cfcomponent
<cfcomponent>
${0:<!--- code --->}
</cfcomponent>
snippet cfcontent
<cfcontent deleteFile='"${1:no}'" file='"${2:filename}'" reset='"${3:yes}'" type='"${4:fileType}'" variable='"${5:variableName}'">
snippet cfcontinue
<cfcontinue>
snippet cfdefaultcase
<cfdefaultcase>
snippet cfdirectory:c
<cfdirectory directory='"${1:pathToDirectory}'" action='"${2:copy}'" destination='"${3:destinationPath}'">
snippet cfdirectory:cr
<cfdirectory directory='"${1:pathToDirectory}'" action='"${2:create}'" >
snippet cfdirectory:d
<cfdirectory directory='"${1:pathToDirectory}'" action='"${2:delete}'" recurse='"${3:yes|no}'">
snippet cfdirectory:l
<cfdirectory directory='"${1:pathToDirectory}'" action='"${2:list}'" name='"${3:nameOfOutputSet}'" recurse='"${4:yes|no}'" sort='"${3:asc|desc}'" >
snippet cfdirectory:r
<cfdirectory directory='"${1:pathToDirectory}'" action='"${2:rename}'" newDirectory='"${3:newNameforDirectory}'">
snippet cfdump
<cfdump var='"
snippet cfelse
<cfelse>
${0:<!--- code --->}
我现在需要解析此字符串以插入到数据库表中。
任何以 snippet[space] 开头的行(例如"snippet cfabort") ->插入到 keyboardShortcuts.keyShort 中,例如 "cfabort"(删除 snippet[space])。
之后的每一行(不包括组之间的空行)->插入到keyboardShortcuts.snippet中,例如"
然后在空行上中断,以使用下一个代码段开始数据库表中的下一行。
我是否使用 NodeJs 中的读取行? 这似乎只使用文件流而不是内存中的字符串。
我是否使用其他东西? 实现这一目标的最佳方法是什么?
当前工作代码与阿卜杜拉·沙欣的回答:
jsUpdateCon.query('SELECT FileContent FROM codeFile WHERE ID = ?',[msg[1]], function(err, result){
if (err) throw err;
str = result[0].FileContent;
var firstInstance = str.search(/=/) + 2;
var lastInstance = str.lastIndexOf('''') + 1;
str = str.substring(firstInstance, lastInstance);
str = str.replace(/''"/g, "'"");
str = str.replace(/'</g, "<");
str = str.replace(/'>/g, ">");
str = str.replace(/''n''/g, "");
str = str.replace(/^'#(.*)/gm, "");
str = str.replace(/'n's*'n/g, "'n");
str = str.replace(/^(?:'t)/gm, "");
str = str.trim();
str = str.replace(/^'s*['r'n]/gm,"");
var object = {};
var tempArray = str.split("'n");
var currentObj = "";
for(var i=0; i<tempArray.length;i++){
if(/snippet /g.test(tempArray[i])){
currentObj = tempArray[i].replace(/snippet /g, "");
object[currentObj] = "";
} else {
object[currentObj] += tempArray[i];
}
}
});
希望这有帮助,此代码会将其解析为一个对象,所有代码片段都是键,您可以找到与其键匹配的特定片段的所有值
var object = {};
text = text.replace(/^'s*['r'n]/gm,"");
var array = text.split("'n");
var currentObj = "";
for(var i=0;i<array.length;i++)
{
if(/snippet /g.test(array[i]))
{
currentObj = array[i].replace(/snippet /g,"");
object[currentObj] = "";
}
else
{
object[currentObj] += array[i];
}
}
console.log(object)
这是输出
{
cfabort: '<cfabort>',
cfargument: '<cfargument name=''"${1:ArgName}''" type=''"${2:any}''" default=''"${3:DefaultValue}''" hint=''"${4:hint about this argument}''">',
cfbreak: '<cfbreak>',
cfcase: '<cfcase value=''"${1:${SELECTED_TEXT:<!--- code --->}}''"> ${0}</cfcase>',
cfcatch: '<cfcatch> ${0}</cfcatch>',
'cfcatch:type': '<cfcatch type=''"${1:any}''"> ${0}</cfcatch>',
cfcomponent: '<cfcomponent> ${0:<!--- code --->}</cfcomponent>',
cfcontent: '<cfcontent deleteFile=''"${1:no}''" file=''"${2:filename}''" reset=''"${3:yes}''" type=''"${4:fileType}''" variable=''"${5:variableName}''">',
cfcontinue: '<cfcontinue>',
cfdefaultcase: '<cfdefaultcase>'
}
相关文章:
- 字符串在将其传递给另一个活动Android JavaScript时读取Null
- 如何使用jquery读取对象字符串
- 从JS中的字符串中读取数字的库
- 将文件的内容读取为Javascript中的字符串
- 以字符串形式读取量角器测试中的更新输入
- 用PHP读取另一个网站的源代码,并将其作为字符串提供给JavaScript
- 将读取字符串与 javascript 中的字符串进行比较
- 从 Node.js 模块中的缓冲区实例中逐行读取字符串
- 正在读取UTC时间字符串
- 使用Javascript和PHP读取JSon字符串
- jasmine:在url中添加和读取查询字符串
- 如何使用正则表达式读取括号内的所有字符串
- 如何从js中读取查询字符串
- 在jQuery/JS中将文件读取为字符串
- 以javascript中的字符串形式从服务器读取json文件
- 从指定的字符串中读取数据以创建选择元素
- JavaScript 按行尾字符拆分字符串并读取每一行
- SAPUI5/OPENUI5:将字符串绑定到 JSON 模型并自动更新更大的字符串(读取 [对象%20Object])
- JavaScript:将字符串读取到动态创建的数组中
- 如何从使用D3.js读取的csv文件中排序数字列-列作为字符串读取