【问题标题】:javascript split("\n\r") add comma on empty linejavascript split("\n\r") 在空行上添加逗号
【发布时间】:2017-06-21 05:11:50
【问题描述】:

我有以下导入文件的代码。我用 split("\n\r") 代码拆分它,但现在每个空行都有逗号。如何修复它..请参阅下面的代码并输出图片。

<html>
    <head>
        <script src="http://code.jquery.com/jquery-1.10.2.js"></script>
    </head>

<body>


        <textarea id="textareaid" name="textareaid" class = "textdata" value="" rows="10" cols="100" placeholder="Enter Any Text!"></textarea>
        <br>
        <input id="filename"  class="btnsubmit"  type="file" accept="text/plain" onchange="PreviewText();"  />

<script type="text/javascript">

              function PreviewText() {
                var file = document.getElementById("filename").files[0];
                    var reader = new FileReader();
                    reader.onload = function (e) {
                    var array = e.target.result.split("\n\r");
                    alert (array);
                    document.getElementById("textareaid").value = array;
                    };
                    reader.readAsText(file);
        };

</script>

</body>
</html>

【问题讨论】:

  • 那是因为alert(array) 本质上是alert(array.toString())。取而代之的是,.join(…) 将其返回为带有您想要的任何分隔符的字符串
  • \n\r - 奇怪,我从未见过那行结尾 - 通常是 \n\r\n 不是吗?

标签: javascript split newline


【解决方案1】:

您可以过滤所有只有逗号的行,然后再将其显示在文本区域中。

检查下面的代码sn-p。我已经使用Array.filter 来检查该行是否有,

var array = [
  "Hello",
  ",",
  "Something",
  ",",
  "Great"
];

array = array.filter(function(line) {
  return line.length > 1 && line !== ",";
});

console.log(array);

【讨论】:

    【解决方案2】:

    您为什么不这样做,Array.join(" ") 将数组转换为字符串并删除分隔符,在这种情况下对于数组是 逗号

    检查一下:

              function PreviewText() {
                    var file = document.getElementById("filename").files[0];
                    var reader = new FileReader();
                    reader.onload = function (e) {
    
                    var array = e.target.result.split("\n\r");
                    document.getElementById("textareaid").value = array[0]
                    document.getElementById("textareaid1").value = array[1]
                    document.getElementById("textareaid2").value = array[2]
                    };
                    reader.readAsText(file);  // 
        };
    

    =========================================== // === ========================

    如果你想动态地这样做,你可以这样做:

    array.forEach(function(article){
      list = document.createElement("ul");
      line = document.createElement("li");
      span = document.createElement("span");
    
      art = document.createTextNode(article) 
    
      span.appendChild(art);
      line.appendChild(span);
      list.appendChild(line);
    
      boxNode.appendChild(list)
    })
    

    示例工作(概念证明) https://jsbin.com/fuyirajoni/edit?html,js,output

    希望对你有帮助:)

    【讨论】:

    • 它不起作用.. 它给出错误.. 未捕获的 TypeError: e.target.result.join is not a function
    • 你想完成什么?
    • 我有文章要转换成数组。然后希望您在一个 textarea 中使用第一行,在另一个 textarea 中使用其余文章
    • 哦,现在我明白了 :),只需检查我现在要更新的第二部分 :)
    • 感谢上面的代码帮助但不是一个好的解决方案,我必须添加到许多数组中才能在 1 个框中获取值。这是 array.slice(1) 给出了完美的结果,但在空行上添加了逗号
    猜你喜欢
    • 1970-01-01
    • 2018-08-21
    • 2021-10-20
    • 1970-01-01
    • 2014-07-20
    • 1970-01-01
    • 2012-11-20
    • 1970-01-01
    • 2018-07-01
    相关资源
    最近更新 更多