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

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

// trimmedString should be:
// "this is"

有人有想法吗?我听说过一些关于使用子字符串,但不太明白。


当前回答

为什么不直接使用substring…字符串。substring(0、7);第一个参数(0)是起点。第二个参数(7)是结束点(独占)。更多信息请点击这里。

var string = "this is a string";
var length = 7;
var trimmedString = string.substring(0, length);

其他回答

为了代码整洁,我建议使用扩展。 请注意,扩展内部对象原型可能会扰乱依赖于它们的库。

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

像这样使用它:

var stringObject= 'this is a verrrryyyyyyyyyyyyyyyyyyyyyyyyyyyyylllooooooooooooonggggggggggggsssssssssssssttttttttttrrrrrrrrriiiiiiiiiiinnnnnnnnnnnnggggggggg';
stringObject.trimEllip(25)

为什么不直接使用substring…字符串。substring(0、7);第一个参数(0)是起点。第二个参数(7)是结束点(独占)。更多信息请点击这里。

var string = "this is a string";
var length = 7;
var trimmedString = string.substring(0, length);

https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/String/substr

从链接:

string.substr(start[, length])

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

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

谢谢。

和一个jsfiddle为任何人谁关心https://jsfiddle.net/t354gw7e/:)

首选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"

startIndex > endIndex:

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

从右到左修剪字符串:(-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"