Javascript 在文本区域中两次输入未被 (/[\n\r]/gm) 检测到

标签 javascript arrays

我的作品已经上传到github了,大家可以查看那里的 https://adminphdcommy.github.io/cr-checker/

JS通过keydown触发并创建。

我按段落(换行)对结果进行分类,JS将使用正则表达式(/[\n\r]/gm)从数组中删除换行符。

但是,当我发送超过 2 个空换行符然后仅继续输入时,正则表达式无法检测到它。

文本区域输入示例:

PO PO PO PO
<--This part detected as newline-->
PO
<--This part detected as newline-->
<--This part unable to detect as newline-->
PO

Console.log 中的结果:

["噗噗噗噗", "噗", "", "噗"]

<小时/>

我的代码获取文本区域值并创建数组:

var crinput = document.getElementById("textarea1").value
var paracountarray = crinput.split(/[\n\r]/gm);

我的代码删除数组中的空字符串:

for(a=0;a<paracountarray.length;a++){
        if(paracountarray[a] == ""){
            paracountarray.splice(a,1)
        }
    }

请告知如何删除数组中的“”。

最佳答案

没有工作JSFiddle例如,我不确定我是否掌握了您想要的东西。当在控制台中运行代码时,它“对我有用”,给了我我所期望的:一个额外的空数组元素:

>> var testStr = 'PO PO PO PO\n\nPO\n\n\nPO'
>> testStr.split(/[\n\r]/gm)
Array [ "PO PO PO PO", "", "PO", "", "", "PO" ]

也许您想要不同的结果?考虑“一次或多次”匹配:

var paracountarray = crinput.split(/[\n\r]+/gm);

这会将十五个连续的换行符视为单个段落分隔符。因此,在您的示例中,这将为您提供三个段落。与前面的示例相比:

>> var testStr = 'PO PO PO PO\n\nPO\n\n\nPO'
>> testStr.split(/[\n\r]+/gm)
Array [ "PO PO PO PO", "PO", "PO" ]

关于Javascript 在文本区域中两次输入未被 (/[\n\r]/gm) 检测到,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46809899/

相关文章:

javascript - 如何在javascript中查找x是否等于数组中的任何值

javascript - 使用事件发射器时无法运行我的 Angular 2 应用程序

android - 国家和 ISD(调用)代码列表作为 android 微调器的两个数组

arrays - 拆分图像数组并将它们排列在 UIView 上

java - 数组按字母顺序排序

javascript - 获取渲染的 HTML 输出

javascript - 图片未出现在 Firefox 上

javascript - 这个节点/快速路由如何完成更新?或者确实如此?

C# 移动数组的最快方法

PHP 开关,为什么这不起作用?