【问题标题】:Left Trim in JavascriptJavascript中的左修剪
【发布时间】:2023-03-14 12:01:01
【问题描述】:

有很多脚本可以在 javascript 中修剪字符串,但没有一个如何左修剪字符串。

这是我用来修剪的:

String.prototype.trim = function() {
    return this.replace(/^\s+|\s+$/g,"");
}

但我想稍微改变一下并创建一个名为 leftTrim 的新函数,它只删除前导空格。我的正则表达式非常有限,因此非常感谢任何帮助。

干杯

【问题讨论】:

标签: javascript regex trim


【解决方案1】:

用途:

String.prototype.leftTrim = function() {
    return this.replace(/^\s+/,"");
}

在正则表达式中:

  • ^ 表示“从字符串的开头”
  • \s 表示空白字符类
  • + 表示一个或多个(贪婪)

所以……

  • ^\s+ 表示“类开头的一个或多个连续空白字符”

注意:正则表达式末尾的g 标志是不必要的,因为锚(^ 和$)明确定义了匹配的内容。不能有多个匹配项。

有关 javascript 中正则表达式语法的详细信息,请参阅 https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Global_Objects/RegExp

【讨论】:

  • 注意:/g(全局)修饰符不是必需的,它可能会降低效率。
  • 什么是g BTW?你错过了。
  • 谢谢 Jesper,你写的时候我已经在编辑它了。 @Vinegar,g 表示global match,用于查找多个匹配项
【解决方案2】:

我刚才已经回答了a similar question,但这是我对您问题的解决方案。

String.prototype.trimLeft = String.prototype.trimLeft || function () {
    var start = -1;

    while( this.charCodeAt(++start) < 33 );

    return this.slice( start, this.length);
};

上述解决方案是基于Ariel Flesler fast trim function 以及Firefox 3.5 及更高版本在String 对象上具有内置trimLeft 方法的事实。

【讨论】:

【解决方案3】:

保持更新:

ES 10:

ES10 附带了trimStart 功能。

它的同义词是trimLeft

const greeting = '   Hi!   ';
console.log(greeting); 
// "   Hi!   "
console.log(greeting.trimStart()); 
// "Hi!   "
console.log(greeting.trimLeft()); 
// "Hi!   "

ES6:

ES6 版本可能是:

function trimLeft(string) {
  const first = [...string].findIndex(char => char !== ' ');
  return string.substring(first, string.length);
}

console.log(trimLeft("   Hi!   ", chars));
// "Hi!   "


【讨论】:

  • 我建议在 ES 6 中简单地向 String 添加一个 trimStart polyfill,而不是使用不同名称的函数。更多未来证明。
  • @FranklinYu 这真的取决于项目中使用的编码范例。在函数式编程中,您将完全相反,将函数包装在字符串原型上以使其可组合。
【解决方案4】:
String.prototype.leftTrim = function() {
        return this.replace(/^\s+/,"");
}

【讨论】:

    【解决方案5】:

    很简单,正则表达式需要稍作改动:

    String.prototype.leftTrim = function() {
        return this.replace(/^\s+/,"");
    }
    

    另见:

    【讨论】:

      【解决方案6】:

      ECMAScript2015 (ES6) 可以使用内置函数String.prototype.trimStart()

      var str1 = "    Lorem ipsum dolor sit amet    ";
      var str2 = "Lorem ipsum dolor sit amet    ";
      var str3 = "    Lorem ipsum dolor sit amet";
      var str4 = "Lorem ipsum dolor sit amet";
      
      console.log(str1.trimStart());
      console.log(str2.trimStart());
      console.log(str3.trimStart());
      console.log(str4.trimStart());

      检查浏览器兼容性https://developer.mozilla.org

      【讨论】:

        【解决方案7】:

        最简单的方法

        var dog = "    Hi    ";
        var keywordvalue = (dog.trimLeft());
        alert(keywordvalue);
        

        https://www.codehaven.co.uk/javascript/trim-left-javascript-text/

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2012-02-14
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-01-18
          • 2013-05-24
          • 1970-01-01
          • 2010-10-04
          相关资源
          最近更新 更多