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 /.

Kacang
sumber
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 .

Dieterg
sumber
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)
Ankit Gupta
sumber
14

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

url = url.replace(/^\/|\/$/g, '');
daun
sumber
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

Martijn
sumber
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

Hessam
sumber
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);
OlivierH
sumber
1

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

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

"/services/".replace(/.*\/(\S+)\//img,"$1"); //--> services
Victor Ribeiro da Silva Eloy
sumber
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)
Rizo
sumber
-3
url=url.substring(1,url.Length-1);

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

Kuzgun
sumber
1
url.lengthtidakurl.Length
Arthur