วิธีการลบอักขระตัวแรกและตัวสุดท้ายของสตริง


161

ฉันสงสัยว่าจะลบอักขระตัวแรกและตัวสุดท้ายของสตริงใน Javascript ได้อย่างไร

URL ของฉันคือการแสดงและฉันต้องการเพียงแค่/installers/installers

บางครั้งก็จะเป็นและฉันเพียงแค่ต้อง/installers/services/installers/services

/ดังนั้นผมจึงไม่สามารถเพียงแค่ตัดทับ


ฉันพยายามที่จะดึงตัวละครตัวแรกและตัวสุดท้ายของเรื่องนั้น ฉันเพิ่งคว้า URL
ถั่วลิสง

ฉันแค่สงสัยว่าทำไมไม่มีใครดูเหมือนจะสังเกตเห็นว่าการตัดเล็ม (ตามที่ระบุในข้อความ) และการลบอักขระตัวแรกและตัวสุดท้ายของสตริงอย่างไม่มีเงื่อนไข (ตามคำอธิบายภาพ) นั้นไม่เหมือนกัน แต่มันอธิบายคำตอบที่หลากหลายด้านล่าง
JensG

คำตอบ:


360

ไปเลย

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

console.log(result);

หรือคุณสามารถใช้.sliceตามที่แนะนำโดยAnkit Gupta

var yourString = "/installers/services/";

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

console.log(result);

เอกสารสำหรับชิ้นและย่อย


6
แต่ URL จะไม่ลงท้ายด้วยเครื่องหมายทับจะใช้อักขระ 1 ตัว
Martijn

7
@Martijn ตรงนี้ตอบคำถาม ไม่มีใครพูดว่าคุณไม่ต้องการเปลื้องผ้าอย่างอื่นนอกจากเฉือน;) +1 จากฉัน - รหัสควรบอกว่าควรทำอย่างไรไม่ชอบตัวอย่าง regex ที่นี่
Episodex

แต่ถ้าคุณจะย้ายไปที่เซิร์ฟเวอร์อื่นการทับของการโอนอาจไม่อยู่ที่นั่น (หรือบางทีคุณอาจกำหนดค่าการเปลี่ยนแปลงตามวัตถุประสงค์) ไม่ downvoting เพียงชี้ให้มันออกมา :)
Martijn

เครื่องหมายสแลชต่อท้ายจะอยู่ที่นั่นเสมอเพราะมันชี้ไปที่ไฟล์ index.php ...
Peanut


14

ฉันไม่คิดว่า jQuery เกี่ยวข้องกับเรื่องนี้ อย่างไรก็ตามลองต่อไปนี้:

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

1
ดูเหมือนว่าถูกต้องที่สุด /^\/+|\/+$/gสิ่งเดียวที่ฉันต้องการเพิ่มปริมาณเพียงในกรณีที่:
georg

8

คุณสามารถ regex มัน:

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

Regex อธิบายว่า:
- สแลชตัวเลือกแรก: ^/?หนี -> ^\/?( ^หมายถึงจุดเริ่มต้นของสตริง)
- ไพพ์ (|) สามารถอ่านได้or
- กว่าสแลชตัวเลือกที่ท้าย -> /?$, หนี -> \/?$( $หมายถึงจุดสิ้นสุดของสตริง )

รวมกันมันจะ^/?|/$ไม่หนี เครื่องหมายทับแรกที่เป็นตัวเลือกหรือทับสุดท้ายก็ได้


สิ่งที่เป็นคือฉันไม่สามารถตัด "/" เพราะบางครั้งฉันต้องการให้แยกส่วนด้านในของ url
Peanut

เครื่องหมายทับด้านในไม่หายไป ป่วยแก้ไขและอธิบาย regex
Martijn

3
ฉันคิดว่าคุณต้องใช้ค่าสถานะโกลบอลเพื่อใช้งาน: "/installers/services/".replace(/^\/?|\/?$/g," ")
Matt Gaunt

3

คุณสามารถใช้substringวิธีการ

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

ทางเลือกอื่นคือsliceวิธีการ


3

คุณสามารถทำอะไรเช่นนั้น:

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

regex นี้เป็นวิธีการทั่วไปที่จะมีพฤติกรรมเดียวกันกับ trimฟังก์ชันที่ใช้ในหลายภาษา

การนำไปใช้งานที่เป็นไปได้ของฟังก์ชันการตัดแต่งคือ:

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

ซึ่งจะลบทั้งหมด/ที่จุดเริ่มต้นและจุดสิ้นสุดของสตริง มันจัดการกับกรณีเช่น///installers/services///

คุณสามารถทำได้โดยง่าย:

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


1

หากคุณต้องการลบสตริงแรกของสตริง

string.slice(1, 0)

และสำหรับการลบจดหมายฉบับสุดท้าย

string.slice(0, -1)

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

วิธีนี้คุณสามารถใช้ไดเรกทอรีถ้ามันเป็นเหมือน ... / ... / ... / ... ฯลฯ


1
url.lengthไม่ใช่url.Length
Arthur
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.