如何在Javascript中将字符串修剪为N个字符?

142 javascript string trim

我怎么能使用Javascript创建一个函数来修剪作为参数传递的字符串到指定的长度,也作为参数传递.例如:

var string = "this is a string";
var length = 6;
var trimmedString = trimFunction(length, string);

// trimmedString should be:
// "this is"
Run Code Online (Sandbox Code Playgroud)

有人有想法吗?我听说过使用子字符串,但不太明白.

Wil*_*ill 301

为什么不使用substring ... string.substring(0, 7);第一个参数(0)是起点.第二个参数(7)是结束点(不包括).更多信息在这里.

var string = "this is a string";
var length = 7;
var trimmedString = string.substring(0, length);
Run Code Online (Sandbox Code Playgroud)

  • 如果你想要超过最大长度的字符串的椭圆(可能更有助于更长的最大值):var string ="this is a string"; var length = 20; var trimmedString = string.length> length?string.substring(0,length - 3)+"...":string.substring(0,length); (17认同)
  • 请注意string.substr(start,length)表现很奇怪,如果length超过字符串的长度,它将返回空.string.substring(start,end)按预期工作,即如果给定的末尾没有足够的字符,它会将字符串返回到它的结尾! (5认同)
  • 谢谢!工作完美。一旦超过时间限制,我会将其标记为答案! (2认同)
  • 使用“string.substr”。尽管之前有评论,但它没有奇怪的行为 (2认同)

Jon*_*sen 43

Will的评论复制到答案中,因为我发现它很有用:

var string = "this is a string";
var length = 20;
var trimmedString = string.length > length ? 
                    string.substring(0, length - 3) + "..." : 
                    string;
Run Code Online (Sandbox Code Playgroud)

谢谢威尔.

对于任何关心https://jsfiddle.net/t354gw7e/ :)的人来说都是一个小问题

  • 在 else 情况下使用 `string.substring(0, length)` 没有意义,因为此时字符串保证 <= 20 个字符,只需使用 `string`。 (2认同)
  • 要压缩额外的两个字符,请使用省略号字符“...” (2认同)

xam*_*mir 12

我建议使用扩展代码整洁.请注意,扩展内部对象原型可能会使依赖它们的库变得混乱.

String.prototype.trimEllip = function (length) {
  return this.length > length ? this.substring(0, length) + "..." : this;
}
Run Code Online (Sandbox Code Playgroud)

并使用它像:

var stringObject= 'this is a verrrryyyyyyyyyyyyyyyyyyyyyyyyyyyyylllooooooooooooonggggggggggggsssssssssssssttttttttttrrrrrrrrriiiiiiiiiiinnnnnnnnnnnnggggggggg';
stringObject.trimEllip(25)
Run Code Online (Sandbox Code Playgroud)

  • 为什么不?因为你要覆盖标准对象`.trim()`的原型.这可能会导致您可能使用的其他库和工具中出现意外行为. (5认同)

Sri*_*tha 10

优于String.prototype.slice方法String.prototype.substring(在substring中,在某些情况下它给出的结果与您期望的不同)。

从左到右修剪字符串:

const str = "123456789";
result = str.slice(0,5);     // "12345", extracts first 5 characters
result = str.substring(0,5); // "12345"
Run Code Online (Sandbox Code Playgroud)

开始索引 > 结束索引:

result = str.slice(5,0);     // "", empty string
result = str.substring(5,0); // "12345" , swaps start & end indexes => str.substring(0,5)
Run Code Online (Sandbox Code Playgroud)

从右向左修剪字符串: (-ve start index)

result = str.slice(-3);                 // "789", extracts last 3 characters
result = str.substring(-3);             // "123456789" , -ve becomes 0 => str.substring(0)
result = str.substring(str.length - 3); // "789"
Run Code Online (Sandbox Code Playgroud)


小智 5

    let trimString = function (string, length) {
      return string.length > length ? 
             string.substring(0, length) + '...' :
             string;
    };
Run Code Online (Sandbox Code Playgroud)

使用案例,

let string = 'How to trim a string to N chars in Javascript';

trimString(string, 20);

//How to trim a string...
Run Code Online (Sandbox Code Playgroud)