Cara menghapus karakter pertama dan terakhir dari sebuah string


161

Saya bertanya-tanya bagaimana cara menghapus karakter pertama dan terakhir dari string dalam Javascript.

Url saya menunjukkan /installers/dan saya hanya ingin installers.

Terkadang itu akan terjadi /installers/services/dan saya hanya perlu installers/services.

Jadi saya tidak bisa begitu saja menghapus tebasan /.


Saya mencoba untuk menghapus karakter pertama dan terakhir dari itu. Saya hanya mengambil URL
Kacang

Saya hanya ingin tahu mengapa tampaknya tidak ada yang memperhatikan bahwa memangkas garis miring (seperti yang ditunjukkan teks) dan tanpa syarat menghapus karakter pertama dan terakhir dari string (seperti keterangan tertulis) tidak persis sama. Tetapi ini menjelaskan berbagai jawaban di bawah ini.
JensG

Jawaban:


360

Ini dia

var yourString = "/installers/";
var result = yourString.substring(1, yourString.length-1);

console.log(result);

Atau Anda dapat menggunakan .sliceseperti yang disarankan oleh Ankit Gupta

var yourString = "/installers/services/";

var result = yourString.slice(1,-1);

console.log(result);

Dokumentasi untuk slice dan substring .


6
Tetapi url tidak diakhiri dengan garis miring, akan membutuhkan 1 karakter
Martijn

7
@ Martijn ini persis menjawab pertanyaan. Tidak ada yang mengatakan Anda tidak ingin menghapus apa pun selain garis miring;). +1 dari saya - kode harus mengatakan apa yang seharusnya dilakukan, tidak seperti contoh regex di sini.
Episodex

Tetapi jika Anda harus pindah ke server lain, slash traling mungkin tidak ada di sana (atau mungkin Anda mengonfigurasi perubahan dengan sengaja). Tidak downvoting, hanya menunjukkannya :)
Martijn

Slash trailing selalu ada di sana karena menunjuk ke file index.php ...
Peanut

131

Mungkin lebih baik menggunakan irisan seperti:

string.slice(1, -1)

14

Saya tidak berpikir jQuery ada hubungannya dengan ini. Bagaimanapun, coba yang berikut ini:

url = url.replace(/^\/|\/$/g, '');

1
Ini sepertinya yang paling benar sejauh ini. Satu-satunya hal, saya akan menambahkan quantifier, hanya dalam kasus: /^\/+|\/+$/g.
georg

8

Anda bisa regex itu:

"string".replace(/^\/?|\/?$/, "")
"/installers/services/".replace(/^\/?|\/?$/, "") // -> installers/services

Regex tersebut menjelaskan:
- Pilihan slash pertama:, ^/?escaped -> ^\/?( ^sarana awal string)
- Pipa (|) dapat dibaca sebagai or
- Dari pilihan slash di akhir -> /?$, escaped -> \/?$( $sarana akhir string )

Digabungkan akan ^/?|/$tanpa melarikan diri. Tebasan pertama opsional atau tebasan terakhir opsional


Masalahnya adalah bahwa saya tidak dapat menghapus "/" karena kadang-kadang saya membutuhkan mereka untuk memisahkan bagian dalam url
Kacang

Garis miring bagian dalam tidak hilang. Sakit mengedit dan menjelaskan regex
Martijn

3
Saya pikir Anda memerlukan bendera global untuk membuatnya berfungsi: "/installers/services/".replace(/^\/?|\/?$/g," ")
Matt Gaunt

3

Anda bisa menggunakan substringmetode

s = s.substring(0, s.length - 1) //removes last character

Alternatif lain adalah slicemetode


3

Anda dapat melakukan sesuatu seperti itu:

"/installers/services/".replace(/^\/+/g,'').replace(/\/+$/g,'')

Regex ini adalah cara umum untuk memiliki perilaku yang sama dari trimfungsi yang digunakan dalam banyak bahasa.

Kemungkinan implementasi fungsi trim adalah:

function trim(string, char){
    if(!char) char = ' '; //space by default
    char = char.replace(/([()[{*+.$^\\|?])/g, '\\$1'); //escape char parameter if needed for regex syntax.
    var regex_1 = new RegExp("^" + char + "+", "g");
    var regex_2 = new RegExp(char + "+$", "g");
    return string.replace(regex_1, '').replace(regex_2, '');
}

Yang akan menghapus semua /di awal dan di akhir string. Ini menangani kasus seperti///installers/services///

Anda juga bisa melakukan:

"/installers/".substring(1, string.length-1);

1

menggunakan .replace(/.*\/(\S+)\//img,"$1")

"/installers/services/".replace(/.*\/(\S+)\//img,"$1"); //--> services

"/services/".replace(/.*\/(\S+)\//img,"$1"); //--> services

Ini tidak melakukan apa yang diminta OP.
Emile Bergeron

1

jika Anda perlu menghapus string pertama

string.slice(1, 0)

dan untuk menghapus surat terakhir

string.slice(0, -1)

-3
url=url.substring(1,url.Length-1);

Dengan cara ini Anda dapat menggunakan direktori jika seperti ... / ... / ... / ... dll.


1
url.lengthtidakurl.Length
Arthur
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.