【问题标题】:add quotes to each item in a text file为文本文件中的每个项目添加引号
【发布时间】:2016-09-05 04:11:58
【问题描述】:

我想使用this list of bad words 进行输入过滤。它现在是一个简单的列表,但我需要将它转换为 JSON 以供我的服务器使用。

我不想遍历每一行并添加引号和,。是否有正则表达式或快速方法将" ", 添加到txt 文件中的每一行?

这样:

2g1c
2 girls 1 cup
acrotomophilia
alabama hot pocket
alaskan pipeline

变成

"2g1c",
"2 girls 1 cup",
"acrotomophilia",
"alabama hot pocket",
"alaskan pipeline",
...

【问题讨论】:

  • 什么,比如output = '"' + input.replace(/\n/g, '","') + '"'(假设input 是代表整个文件的字符串)? (或者,如果您仍然希望在输出中添加换行符,则制作替换字符串 '",\n"',但如果它是 JSON,您可能不需要它们,尽管您需要在开头和结尾添加 []。)
  • 请参阅this SO 问题。这是一个免费程序。
  • fileContents.split('\n').map(line => '"' + line + '"').join(',\n')

标签: javascript json node.js


【解决方案1】:

使用反引号 `

var txt=`2g1c
2 girls 1 cup
acrotomophilia
alabama hot pocket
alaskan pipeline`;

var arrayUntrimmed = txt.split("\n");

var array=arrayUntrimmed.map(function(a){return a.trim()});

(注意:Firefox 34 和 Chrome 41 支持此 ECMAScript 6 功能)

【讨论】:

    【解决方案2】:

    您所要做的就是在新行处拆分字符串并删除数组中的最后一项(因为它是空的)。

    var txt = '2g1c\n2 girls 1 cup\nacrotomophilia\nalabama hot pocket\nalaskan pipeline\n';
    var array = txt.split('\n').slice(0, -1);
    
    
    console.log(array)

    然后您可以使用Array.prototype.some 作为谓词方法来确定给定字符串是否包含一个或多个列入黑名单的单词。

    var txt = '2g1c\n2 girls 1 cup\nacrotomophilia\nalabama hot pocket\nalaskan pipeline\n';
    var array = txt.split('\n').slice(0, -1);
    
    var input1 = 'not bad';
    var input2 = 'An alaskan pipeline is quite creative...';
    
    var input1HasBadWords = array.some(function (word) {
      return input1.indexOf(word) > -1;
    });
    
    var input2HasBadWords = array.some(function (word) {
      return input2.indexOf(word) > -1;
    });
    
    console.log('input1 is: ' + input1HasBadWords);
    console.log('input2 is: ' + input2HasBadWords);

    你的控制器看起来像这样:

    const fs = require('fs');
    
    app.post('/route', (req, res) => {
      fs.readFile('/etc/hosts', 'utf8', (err, data) => {
        if (err) {
          res.sendStatus(500);
        }
    
        const badWords = data.split('\n').slice(0, -1);
        const hasBadWords = badWords.some((word) => {
           return req.body.input.indexOf(word) > -1;
        });
    
        if(hasBadWords) {
          res.send('Dirty mouth? Clean it with orbit!');
        } else {
          res.send('You are very polite');
        }
      });
    });
    

    【讨论】:

      【解决方案3】:

      http://pastebin.com/U5phzWUM

      我想最简单的方法是为此使用软件。我用 SublimeText 花了 30 秒来完成这项工作

      http://www.sublimetext.com/docs/selection

      【讨论】:

        【解决方案4】:

        您可以使用 readline 模块。阅读并在每一行中添加引号。

        阅读线:https://nodejs.org/api/readline.html

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2017-12-17
          • 1970-01-01
          • 2020-02-05
          • 2017-02-11
          • 2022-01-22
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多