Ich habe diese Zeichenfolgen in Javascript:
/banking/bonifici/italia
/banking/bonifici/italia/
und ich möchte den ersten und letzten Schrägstrich entfernen, wenn er existiert.
Ich habe es versucht, ^\/(.+)\/?$
aber es funktioniert nicht.
Beim Lesen eines Beitrags in stackoverflow stellte ich fest, dass PHP eine Trimmfunktion hat und ich seine Javascript-Übersetzung ( http://phpjs.org/functions/trim : 566) verwenden könnte, aber ich würde einen "einfachen" regulären Ausdruck bevorzugen.
javascript
regex
CorPao
quelle
quelle
Antworten:
return theString.replace(/^\/|\/$/g, '');
"Ersetzen Sie alle (
/.../g
) führenden Schrägstriche (^\/
) oder (|
) nachfolgenden Schrägstriche (\/$
) durch eine leere Zeichenfolge."quelle
//www.google.com
?//
wird vermisst werden./^\s*\/*\s*|\s*\/*\s*$/gm
es kümmert sich um einige mögliche Leerzeichen vor und nach den Schrägstrichen und mehreren Schrägstrichen, die das *Es gibt keinen wirklichen Grund, hier einen regulären Ausdruck zu verwenden. Zeichenfolgenfunktionen funktionieren einwandfrei:
var string = "/banking/bonifici/italia/"; if (string.charAt(0) == "/") string = string.substr(1); if (string.charAt(string.length - 1) == "/") string = string.substr(0, string.length - 1); // string => "banking/bonifici/italia"
Sehen Sie dies in Aktion auf jsFiddle .
Verweise:
String.substr
String.charAt
quelle
Falls die Verwendung von RegExp keine Option ist oder Sie Eckfälle behandeln müssen, während Sie mit URLs arbeiten (z. B. doppelte / dreifache Schrägstriche oder leere Zeilen ohne komplexe Ersetzungen) oder zusätzliche Verarbeitung verwenden, ist dies weniger offensichtlich, aber funktionaler. Stillösung:
const urls = [ '//some/link///to/the/resource/', '/root', '/something/else', ]; const trimmedUrls = urls.map(url => url.split('/').filter(x => x).join('/')); console.log(trimmedUrls);
In dieser Snippet-
filter()
Funktion kann eine komplexere Logik implementiert werden, als nur leere Zeichenfolgen zu filtern (dies ist das Standardverhalten).Ein Wort der Warnung - dies ist nicht so schnell wie andere Schnipsel hier.
quelle
Nur für den Fall, dass hier jemand eine vorzeitige Optimierung benötigt ...
http://jsperf.com/remove-leading-and-trailing-slashes/5
var path = '///foo/is/not/equal/to/bar///' var count = path.length - 1 var index = 0 while (path.charCodeAt(index) === 47 && ++index); while (path.charCodeAt(count) === 47 && --count); path = path.slice(index, count + 1)
quelle
theString.replace(/^\/|\/$/g, '')
für Leute, die den Code lesen, wirklich einfach und leicht zu verstehen, aber wahrscheinlich langsamer als diese!