Bir dizenin ilk ve son karakterini kaldırma


161

Javascript bir dizenin ilk ve son karakterini kaldırmak nasıl merak ediyorum.

URL'im gösteriliyor /installers/ve sadece istiyorum installers.

Bazen olur /installers/services/ve ihtiyacım var installers/services.

Bu yüzden sadece eğik çizgileri çıkaramam /.


Sadece ilk ve son karakterini soymaya çalışıyorum. Sadece URL'yi alıyorum
Fıstık

Sadece neden kırpmanın eğik çizgi (metnin gösterdiği gibi) ve koşulsuz olarak bir dizenin ilk ve son karakterini (altyazının belirttiği gibi) kaldırmasının aynı olmadığını fark etmediğini merak ediyorum. Ancak, aşağıda verilen geniş kapsamlı cevapları açıklamaktadır.
JensG

Yanıtlar:


360

Hadi bakalım

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

console.log(result);

Veya Ankit Gupta'nın.slice önerdiği gibi kullanabilirsiniz

var yourString = "/installers/services/";

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

console.log(result);

Dilim ve alt dize belgeleri .


6
Ancak url, eğik çizgi ile bitmez, 1 karakter alır
Martijn

7
@Martijn bu tam olarak soruyu cevaplıyor. Kimse eğik çizgi dışında bir şey soymak istemediğini söylemedi;). Benden +1 - kod, burada normal ifade örnekleri gibi değil, ne yapması gerektiğini söylemelidir.
Episodex

Ancak başka bir sunucuya nereye taşınacağınız takdirde, eğik çizgi orada olmayabilir (veya değişikliği bilerek yapılandırmış olabilirsiniz). Değil aşağı oy, sadece işaret :)
Martijn

Sondaki eğik çizgi her zaman orada olacak çünkü index.php dosyasına işaret ediyor ...
Fıstık


14

Ben jQuery bu konuda bir şey olduğunu sanmıyorum. Her neyse, aşağıdakileri deneyin:

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

1
Bu şimdiye kadarki en doğru olana benziyor. Tek şey, her ihtimale karşı, bir niceleyici eklersiniz: /^\/+|\/+$/g.
georg

8

Yeniden düzenleyebilirsiniz:

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

Normal ifade açıkladı:
- İsteğe bağlı ilk eğik çizgi:, ^/?kaçtı -> ^\/?( ^dizenin başlangıcı anlamına gelir)
- Boru (|) şu şekilde okunabilir or
- Sondaki seçenek eğik çizgisinden -> /?$, kaçtı -> \/?$( $dizenin sonu anlamına gelir) )

Kombine ^/?|/$kaçmadan olurdu . İsteğe bağlı ilk eğik çizgi VEYA isteğe bağlı son eğik çizgi


Mesele şu ki, "/" işaretini kaldıramıyorum çünkü bazen URL'nin iç kısımlarını ayırmak için bunlara ihtiyacım olacak
Peanut

İç eğik çizgiler gitmiyor. Regex'i düzenleyeceğim ve açıklayacağım
Martijn

3
Bu işi yapmak için küresel bayrağa ihtiyacınız olduğunu düşünüyorum: "/installers/services/".replace(/^\/?|\/?$/g," ")
Matt Gaunt

3

substringYöntemi kullanabilirsiniz

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

başka bir alternatif sliceyöntem


3

Böyle bir şey yapabilirsiniz:

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

Bu normal ifade, trimbirçok dilde kullanılan işlevin aynı davranışına sahip olmanın yaygın bir yoludur .

Trim işlevinin olası bir uygulaması:

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, '');
}

/Dize başında ve sonunda hepsini silecek . Gibi davaları ele///installers/services///

Ayrıca şunları da yapabilirsiniz:

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

1

kullanım .replace(/.*\/(\S+)\//img,"$1")

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

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

Bu OP'nin istediği şeyi yapmaz.
Emile Bergeron

1

eğer ipin ilk kısmını çıkarmanız gerekiyorsa

string.slice(1, 0)

ve son harfi kaldırmak için

string.slice(0, -1)

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

Bu şekilde ... / ... / ... / ... vb. Gibi dizinleri kullanabilirsiniz.


1
url.lengthdeğilurl.Length
Arthur
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.