網站搜尋

如何在 Javascript 中將字串裁剪為 N 個字元?


如何使用 Javascript 製作一個函數,將作為參數傳入的字串修剪到作為參數傳入的指定長度。例如:

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

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

有人有什麼想法嗎?我聽說過使用子字串,但不太明白。

答案#1

為什麼不直接使用 substring... string.substring(0, 7); 第一個參數 (0) 是起始位置。第二個參數 (7) 是結束位置(不包含)。更多資訊在這裡。

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

答案#2

將 Will 的評論複製到答案中,因為我覺得它很有用:

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

謝謝你,Will。

給有興趣的人一個 jsfiddle https://jsfiddle.net/t354gw7e/ :)

答案#3

我建議使用擴展來保持程式碼整潔。請注意,擴展內部物件原型可能會干擾依賴它們的程式庫。

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

並像這樣使用它:

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

答案#4

偏好使用 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)

從右到左截取字串: (負起始索引)

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"

答案#5

https://developer.mozilla.org/zh-TW/docs/Web/JavaScript/Reference/Global_Objects/String/substr

來自連結:

string.substr(start[, length])