javascript - 如何使用粘贴代码删除前导空格/制表符?

标签 javascript

我正在尝试处理文本区域中的粘贴代码,并希望对粘贴到第一个非间距字符的内容进行左 trim 。我想采用以下代码:

    if (foo)
    {
        console.log(bar);
    }

然后像这样呈现:

if (foo)
{
    console.log(bar);
}

我已经编写了将文本分解的代码,以便我将每一行都放在一个数组中,然后遍历该数组,将最少的空格存储在变量中,然后再次遍历该数组,使用 substr( ) 返回 X 个字符后的字符串。如果任何行没有前导空格或制表符,则不应进行 trim 。我所做的工作(尚未添加对选项卡的支持),但我相信有更好的方法可以做到这一点。我在 jsFiddle 上有一个工作样本.

那么...有人知道我怎样才能更有效地完成这项工作吗?

最佳答案

如果您有一个字符串数组,那么对它们进行排序会将以空格开头的字符串放在开头(因为空格是任何打印字符的最低 ASCII 代码)。因此,数组的最后一个成员将具有最少数量的前导空格(可能为零)。

因此要 trim 的前导字符数由下式给出:

function spacesToTrim(s) {
  s = s.split('\n').sort();
  var n = s[s.length - 1].match(/^\s*/);
  return n? n[0].length : 0;
}

而且由于 splitsort 等数组操作非常快,因此它应该比任何交互方法都快得多,尤其是在数组上迭代两次的方法。

关于javascript - 如何使用粘贴代码删除前导空格/制表符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9288163/

相关文章:

javascript - 如何在 Next.js 中使用 redux 获取数据

javascript - Javascript 中的命名参数不会覆盖现有值

javascript - 如何在 Socket.IO 中模拟连接失败

javascript - 如何确保返回的对象文字中的方法调用使用预期的 "this"

javascript - 如何从本地变量检索数据

javascript - 选择具有相同 id 的多个元素 - WebDriverJS

javascript - JavaScript 中的数组和数据处理

javascript - 使用 jQuery 在更改事件上创建新的下拉菜单

javascript - 显示内联抛出错误

javascript - 如何访问 angularjs promise 中的数据?