如何删除字符串开头的空格

29

我想去掉字符串开头的空格,只需要移除开头的空格,不要影响其它位置的空格。

var string=' This is test';

1
JavaScript现在拥有trimStart()trimEnd()。https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/trimStarttrimEnd() • https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/trimEnd - sideshowbarker
10个回答

47
这是您想要的内容:
function ltrim(str) {
  if(!str) return str;
  return str.replace(/^\s+/g, '');
}

同样适用于IE8+中的普通修剪:

function trimStr(str) {
  if(!str) return str;
  return str.replace(/^\s+|\s+$/g, '');
}

针对右侧空格的修剪:

function rtrim(str) {
  if(!str) return str;
  return str.replace(/\s+$/g, '');
}

作为填充物的话,或者称之为polyfill:
// for IE8
if (!String.prototype.trim)
{
    String.prototype.trim = function ()
    {
        // return this.replace(/^\s+|\s+$/g, '');
        return this.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, '');
    };
}

if (!String.prototype.trimStart)
{
    String.prototype.trimStart = function ()
    {
        // return this.replace(/^\s+/g, '');
        return this.replace(/^[\s\uFEFF\xA0]+/g, '');
    };
}

if (!String.prototype.trimEnd)
{
    String.prototype.trimEnd = function ()
    {
        // return this.replace(/\s+$/g, '');
        return this.replace(/[\s\uFEFF\xA0]+$/g, '');
    };
}

注意:
\s:包括空格、制表符\t、换行符\n以及其他少见字符,如\v、\f和\r。
\uFEFF:Unicode字符“零宽度不间断空格”(U+FEFF)。
\xA0:ASCII 0xA0(160:不间断空格)不被识别为空格字符。


2
你能否解释一下 /^\s+|\s+$/g 这段程序代码的含义? - vikramvi
2
@vikramvi:这是一个正则表达式模式(RegEx: Regular Expression):一行开头的一个或多个空格,或者一行结尾的一个或多个空格。^ 表示行的开头,$ 表示行的结尾,\ 是转义序列,\s 表示“空格”,\s+ 表示一个或多个空格字符。 - Stefan Steiger
为什么要使用 /g?如果我们只想在开头进行多次替换怎么办? - Garr Godfrey
@Garr Godfrey:可能是因为我从trim中复制了它,trim需要它(否则它只会删除字符串开头的空格)。除了性能之外,它不应该对ltrim和rtrim产生任何不良影响。 - Stefan Steiger

40

尝试使用JavaScript的trim()函数,它可以从字符串中删除前导和尾随空格。

var string=' This is test';
string = string.trim();

演示

根据评论区的讨论,为了实现浏览器向后兼容性,只需使用jQuery的$.trim(str)函数即可。

var string=' This is test';    
string = $.trim(string)

1
请注意:trim 仅支持 IE9+ 浏览器 https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/String/Trim - Satpal
注意:trim()方法不支持Internet Explorer 8及更早版本。 - Software Engineer
在这里,我想要删除字符串开头的空格。 - user1851420

15
您可以使用String.prototype.trimStart()。像这样:
myString=myString.trimStart();

如果您想要修剪尾部,可以使用以下方法:

myString=myString.trimEnd();

注意,这2个函数不支持IE浏览器。对于IE浏览器,您需要使用polyfill来替代它们。


1
这真是太棒了。 - Àtishking

3
最简单的解决方案:(使用 ES10 的 trimStart() 功能)
var string= 'This is a test';
console.log(string.trimStart());

2

您应该使用JavaScript的trim函数


var str = "       Hello World!        ";
alert(str.trim()); 

该函数还可以从字符串末尾删除空格。


注意:trim()方法不支持Internet Explorer 8及更早版本。 - Software Engineer

1

这只是一种不同且不太高效的方法来完成它

var str = "   My string";

function trim() {
  var stringStarted = false;
  var newString = "";

  for (var i in str) {
    if (!stringStarted && str[i] == " ") {
      continue;
    }
    else if (!stringStarted) {
      stringStarted = true;
    }
    newString += str[i];
  }
  
  return newString;
}

console.log(trim(str));

我非常确定这对其他任何事情都不起作用,也不是最优解决方案,但这个想法突然浮现在我的脑海中。


1

.trimLeft() 可以用于此操作。

const str = "   string   ";
console.log(str.trimLeft());     // => "string   "

0
你想要移除字符串开头的空格(即空白字符)。因此,不能使用标准的 jquesy .trim()。你可以使用正则表达式来查找和替换字符串开头的空格。
尝试这个方法:
.replace(/^\s+/g, "")

阅读此文章

试试这个:

var string='    This is test   ';
alert(string.replace(/^\s+/g, ""));

工作示例

或者如果你想要去掉开头和结尾的空格,那么使用.trim()


0
如果你正在使用jQuery,只需在末尾添加".trim()"。它将去除所有的"\n\r"和开头+结尾的空格。

-1
var string=' This is test';    
$.trim(string);

2
这将从用户指定要保留的字符串末尾删除空格。 - Undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接