Wie trimme ich eine Zeichenfolge in Javascript auf N Zeichen?

Lesezeit: 4 Minuten

Wie kann ich mit Javascript eine Funktion erstellen, die die als Argument übergebene Zeichenfolge auf eine bestimmte Länge kürzt, die auch als Argument übergeben wird. Zum Beispiel:

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

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

Hat jemand Ideen? Ich habe etwas über die Verwendung von Teilzeichenfolgen gehört, aber nicht ganz verstanden.

  • “this is” = 7 Zeichen, hast du das beabsichtigt ?

    – Aziz Punjani

    18. September 2011 um 18:57 Uhr

  • Wie in der Frage gesagt, bin ich mir nicht sicher, wie ich dazu substring verwenden soll. Können Sie mir bitte ein Beispiel geben? Ich akzeptiere natürlich eine Antwort, wenn es funktioniert 😉 @Interstellar_Coder oops, Tippfehler!

    Benutzer825286

    18. September 2011 um 18:58 Uhr


Benutzer-Avatar
Werden

Warum nicht einfach Teilzeichenfolge verwenden … string.substring(0, 7); Das erste Argument (0) ist der Ausgangspunkt. Das zweite Argument (7) ist der Endpunkt (ausschließlich). Mehr Infos hier.

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

  • Vielen Dank! Funktioniert perfekt. Ich werde es als Antwort markieren, sobald das Zeitlimit abgelaufen ist!

    Benutzer825286

    18. September 2011 um 19:01 Uhr

  • Und wenn Sie Auslassungspunkte für Zeichenfolgen wünschen, die die maximale Länge überschreiten (wahrscheinlich hilfreicher für längere max): var string = “Dies ist eine Zeichenfolge”; Variablenlänge = 20; var trimmedString = string.länge > länge ? string.substring(0, Länge – 3) + “…” : string.substring(0, Länge);

    – Werden

    13. September 2012 um 15:19 Uhr


  • Bitte beachten Sie, dass sich string.substr(start, length) seltsam verhält, es wird leer zurückgegeben, wenn length größer als die Länge des Strings ist. string.substring(start, end) funktioniert wie erwartet, dh es wird die Zeichenfolge bis zu ihrem Ende zurückgeben, wenn nicht genügend Zeichen für das angegebene Ende vorhanden sind!

    – cent

    11. Februar 2015 um 14:53 Uhr


  • Verwenden string.substr. Es hat kein seltsames Verhalten, trotz des vorherigen Kommentars

    – Gibolt

    12. August 2017 um 4:51 Uhr

  • .substring(from, to) nimmt Indizes. .substr(from, length) nicht, auch .substr() gewöhnt an haben eine Inkonsistenz im IE, wenn das erste Argument negativ ist.

    – Bob Stein

    13. Juni 2019 um 12:24 Uhr

Kopieren von Wills Kommentar in eine Antwort, weil ich es nützlich fand:

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

Danke Will.

Und eine Jsfiddle für alle, die sich darum kümmern https://jsfiddle.net/t354gw7e/ 🙂

  • Kein Sinn in der Verwendung string.substring(0, length) im anderen Fall, da die Zeichenfolge an dieser Stelle garantiert <= 20 Zeichen lang ist, verwenden Sie einfach string.

    – Nick Sweeting

    17. Mai 2016 um 21:46 Uhr

  • Um zwei zusätzliche Zeichen einzufügen, verwenden Sie das Auslassungszeichen

    – Olli

    25. September 2020 um 0:21 Uhr

Benutzer-Avatar
Zameer Ansari

Ich schlage vor, eine Erweiterung für die Sauberkeit des Codes zu verwenden. Beachten Sie, dass das Erweitern eines internen Objektprototyps potenziell mit Bibliotheken in Konflikt geraten könnte, die von ihnen abhängen.

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

Und verwenden Sie es wie folgt:

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

  • Warum nicht? Weil Sie den Prototyp eines Standardobjekts überschreiben .trim(). Dies kann zu unerwartetem Verhalten in anderen Bibliotheken und Tools führen, die Sie möglicherweise verwenden.

    – Oleg Bermann

    16. August 2017 um 17:22 Uhr

  • das habe ich gebraucht

    – Naneri

    25. März 2018 um 16:35 Uhr

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

Von Link:

string.substr(start[, length])

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

Anwendungsfall,

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

trimString(string, 20);

//How to trim a string...

Benutzer-Avatar
SridharKritha

Vorziehen String.prototype.slice über dem String.prototype.substring Methode (in Teilzeichenfolgein einigen Fällen gibt es ein anderes Ergebnis als erwartet).

Kürzen Sie die Saite von LINKS nach RECHTS:

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)

Schneiden Sie die Saite von RECHTS nach LINKS: (-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"

Etwas spät … Ich musste antworten. Dies ist der einfachste Weg.

// 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) + '"');

Schritt für Schritt. .padEnd – Garantiert die Länge des Strings

“Die Methode padEnd() füllt die aktuelle Zeichenfolge mit einer bestimmten Zeichenfolge auf (bei Bedarf wiederholt), sodass die resultierende Zeichenfolge eine bestimmte Länge erreicht. Die Auffüllung wird vom Ende (rechts) der aktuellen Zeichenfolge angewendet. Die Quelle für diese interaktive Beispiel ist in einem GitHub-Repository gespeichert.” Quelle: developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…

.substring – begrenzt die benötigte Länge

Wenn Sie Ellipsen hinzufügen möchten, hängen Sie sie an die Ausgabe an.

Ich habe 4 Beispiele für gängige JavaScript-Nutzungen gegeben. Ich empfehle dringend, den String-Prototyp mit Overloading für Legacy-Unterstützung zu verwenden. Es erleichtert die spätere Implementierung und Änderung erheblich.

  • Hallo! Es ist gut, auch eine Erklärung dazu beizufügen, was mit Ihrem Code vor sich geht. Angesichts dessen, wie ähnlich Ihre Lösung der akzeptierten Antwort ist, vielleicht ein kleines Detail darüber, was die padEnd macht gerade.

    – Mattie

    24. Januar 2019 um 0:44 Uhr

  • Meine Lösung ist viel sauberer und standardisierter und zeigt mehrere Verwendungen. Die Methode padEnd() füllt den aktuellen String mit einem gegebenen String auf (bei Bedarf wiederholt), sodass der resultierende String eine gegebene Länge erreicht. Die Auffüllung wird vom Ende (rechts) der aktuellen Zeichenfolge angewendet. Die Quelle für dieses interaktive Beispiel ist in einem GitHub-Repository gespeichert. Quelle: developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…

    – Matthäus Egan

    24. Januar 2019 um 0:51 Uhr

  • Ich bestreite nicht die Qualität Ihrer Antwort. Nur ein Vorschlag, wie man es besser machen kann. Ihre Erklärung ist großartig – bearbeiten Sie Ihre Antwort und fügen Sie sie dort ein!

    – Mattie

    24. Januar 2019 um 0:53 Uhr

  • Hallo Matt, ich mag deine Antwort. Schade, dass Sie auf eine etwas andere Frage antworten. Er fragte ursprünglich nach dem Trimmen einer Saite, nicht nach der Rückgabe einer festen Saitenlänge.

    – Jakob Kriz

    23. Juni 2020 um 12:20 Uhr

1311610cookie-checkWie trimme ich eine Zeichenfolge in Javascript auf N Zeichen?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy