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

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

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


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

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

379343 次浏览

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

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

会的注释复制到答案中,因为我发现它很有用:

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.trimEllip = function (length) {
return this.length > length ? this.substring(0, length) + "..." : this;
}

像这样使用它:

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

小晚…我不得不做出回应。这是最简单的方法。

// JavaScript
function fixedSize_JS(value, size) {
return value.padEnd(size).substring(0, size);
}


// JavaScript (Alt)
var fixedSize_JSAlt = function(value, size) {
return value.padEnd(size).substring(0, size);
}


// Prototype (preferred)
String.prototype.fixedSize = function(size) {
return this.padEnd(size).substring(0, size);
}


// Overloaded Prototype
function fixedSize(value, size) {
return value.fixedSize(size);
}


// usage
console.log('Old school JS -> "' + fixedSize_JS('test (30 characters)', 30) + '"');
console.log('Semi-Old school JS -> "' + fixedSize_JSAlt('test (10 characters)', 10) + '"');
console.log('Prototypes (Preferred) -> "' + 'test (25 characters)'.fixedSize(25) + '"');
console.log('Overloaded Prototype (Legacy support) -> "' + fixedSize('test (15 characters)', 15) + '"');

一步一步来。 .padEnd -保证字符串的长度

padEnd()方法使用给定的字符串填充当前字符串(如果需要,可以重复),以便生成的字符串达到给定的长度。填充从当前字符串的末尾(右)应用。这个交互式示例的源代码存储在GitHub存储库中。” 来源:developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…

.substring -限制你需要的长度

如果选择添加省略号,请将它们附加到输出中。

我给出了JavaScript常用用法的4个例子。我强烈建议使用带有重载的String原型来获得遗留支持。这使得以后的实现和更改更加容易。

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

用例,

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


trimString(string, 20);


//How to trim a string...

我认为你应该使用这个代码:-)

    // sample string
const param= "Hi you know anybody like pizaa";


// You can change limit parameter(up to you)
const checkTitle = (str, limit = 17) => {
var newTitle = [];
if (param.length >= limit) {
param.split(" ").reduce((acc, cur) => {
if (acc + cur.length <= limit) {
newTitle.push(cur);
}
return acc + cur.length;
}, 0);
return `${newTitle.join(" ")} ...`;
}
return param;
};
console.log(checkTitle(str));


// result : Hi you know anybody ...

只是另一个建议,删除任何尾随空白

limitStrLength = (text, max_length) => {
if(text.length > max_length - 3){
return text.substring(0, max_length).trimEnd() + "..."
}
else{
return text
}

有几种方法可以做到这一点

let description = "your test description your test description your test description";
let finalDesc = shortMe(description, length);


function finalDesc(str, length){


// return str.slice(0,length);


// return str.substr(0, length);


// return str.substring(0, length);


}

您还可以修改此函数以进入字符串之间。

首选String.prototype.slice而不是String.prototype.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"

这是我的解决方案,其中也包括修剪空白。

const trimToN = (text, maxLength, dotCount) => {
let modText = text.trim();


if (modText.length > maxLength) {
modText = text.substring(0, maxLength - dotCount);
modText = modText.padEnd(maxLength, ".");


return modText;
}


return text;
};

trimToN('Javascript', 6,2)将返回';Java.."