Cách xóa ký tự đầu tiên và cuối cùng của chuỗi


161

Tôi đang tự hỏi làm thế nào để loại bỏ ký tự đầu tiên và cuối cùng của một chuỗi trong Javascript.

Url của tôi đang hiển thị /installers/và tôi chỉ muốn installers.

Đôi khi nó sẽ được /installers/services/và tôi chỉ cần installers/services.

Vì vậy, tôi không thể chỉ đơn giản là tước các dấu gạch chéo /.


Tôi đang cố gắng loại bỏ nhân vật đầu tiên và cuối cùng của điều đó. Tôi vừa lấy URL
Peanut

Tôi chỉ tự hỏi tại sao dường như không ai chú ý rằng việc cắt xén (như văn bản chỉ ra) và loại bỏ vô điều kiện char đầu tiên và cuối cùng của chuỗi (như chú thích chỉ ra) không hoàn toàn giống nhau. Nhưng nó giải thích một loạt các câu trả lời dưới đây.
JensG

Câu trả lời:


359

Bạn đi đây

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

console.log(result);

Hoặc bạn có thể sử dụng .slicetheo đề xuất của Ankit Gupta

var yourString = "/installers/services/";

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

console.log(result);

Tài liệu cho látchuỗi con .


6
Nhưng url không kết thúc bằng dấu gạch chéo, nó sẽ mất 1 ký tự
Martijn

7
@Martijn điều này trả lời chính xác câu hỏi. Không ai nói bạn không muốn tước bất cứ thứ gì ngoài dấu gạch chéo;). +1 từ tôi - mã nên nói những gì nó phải làm, không giống như các ví dụ regex ở đây.
Episodex

Nhưng nếu bạn di chuyển đến một máy chủ khác, dấu gạch chéo có thể không có ở đó (hoặc có thể bạn đã định cấu hình thay đổi trên mục đích). Không bỏ phiếu, chỉ cần chỉ ra :)
Martijn

Dấu gạch chéo luôn luôn ở đó vì nó trỏ đến tệp index.php ...
Peanut

131

Nó có thể đẹp hơn khi sử dụng lát như:

string.slice(1, -1)

14

Tôi không nghĩ jQuery có bất cứ điều gì để làm với điều này. Dù sao, hãy thử như sau:

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

1
Điều này có vẻ như đúng nhất cho đến nay. Điều duy nhất, tôi sẽ thêm một bộ định lượng, chỉ trong trường hợp : /^\/+|\/+$/g.
Georgia

8

Bạn có thể regex nó:

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

Biểu thức chính quy giải thích:
- Dấu gạch chéo đầu tiên tùy chọn : ^/?, đã thoát -> ^\/?( ^nghĩa là bắt đầu của chuỗi)
- Đường ống (|) có thể được đọc là or
- Hơn dấu gạch chéo tùy chọn ở cuối -> /?$, đã thoát -> \/?$( $kết thúc của chuỗi )

Kết hợp nó sẽ ^/?|/$không thoát ra. Chém đầu tiên tùy chọn HOẶC dấu gạch chéo cuối tùy chọn


Vấn đề là tôi không thể loại bỏ "/" bởi vì đôi khi tôi sẽ cần những phần đó để tách các phần bên trong của url
Peanut

Các dấu gạch chéo bên trong không biến mất. Ill chỉnh sửa và giải thích regex
Martijn

3
Tôi nghĩ rằng bạn cần cờ toàn cầu để thực hiện công việc này: "/installers/service/".replace(/ucci\/?|\/?$/g," ")
Matt Gaunt

3

Bạn có thể sử dụng substringphương pháp

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

một slicephương pháp khác là phương pháp


3

Bạn có thể làm một cái gì đó như thế:

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

Regex này là một cách phổ biến để có cùng hành vi của trimhàm được sử dụng trong nhiều ngôn ngữ.

Một triển khai có thể của chức năng trim là:

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

Mà sẽ xóa tất cả /ở đầu và cuối chuỗi. Nó xử lý các trường hợp như///installers/services///

Bạn cũng có thể chỉ cần làm:

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

1

sử dụng .replace(/.*\/(\S+)\//img,"$1")

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

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

Điều này không làm những gì OP yêu cầu.
Emile Bergeron

1

nếu bạn cần loại bỏ chuỗi đầu tiên của chuỗi

string.slice(1, 0)

và để xóa thư cuối cùng

string.slice(0, -1)

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

Bằng cách này, bạn có thể sử dụng các thư mục nếu nó giống như ... / ... / ... / ... vv


1
url.lengthkhôngurl.Length
Arthur
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.