Xóa mọi thứ sau một ký tự nhất định


280

Có cách nào để loại bỏ mọi thứ sau một nhân vật nào đó hay chỉ chọn mọi thứ tùy theo nhân vật đó? Tôi nhận được giá trị từ an href và cho đến "?", Và nó sẽ luôn là một số lượng ký tự khác nhau.

Như thế này

/Controller/Action?id=11112&value=4444

Tôi muốn href là /Controller/Actionduy nhất, vì vậy tôi muốn xóa mọi thứ sau dấu "?".

Tôi đang sử dụng cái này bây giờ:

 $('.Delete').click(function (e) {
     e.preventDefault();

     var id = $(this).parents('tr:first').attr('id');                
     var url = $(this).attr('href');

     console.log(url);
 }

Câu trả lời:


467
var s = '/Controller/Action?id=11112&value=4444';
s = s.substring(0, s.indexOf('?'));
document.write(s);

Mẫu ở đây

Tôi cũng nên đề cập rằng các hàm chuỗi gốc nhanh hơn nhiều so với các biểu thức thông thường, chúng chỉ thực sự được sử dụng khi cần thiết (đây không phải là một trong những trường hợp đó).

Mã được cập nhật vào tài khoản không có '?':

var s = '/Controller/Action';
var n = s.indexOf('?');
s = s.substring(0, n != -1 ? n : s.length);
document.write(s);

Mẫu ở đây


15
mã spaghetti này không phải là câu trả lời tốt nhất. xem câu trả lời của phương thức phân chia
LastTribunal

1
LoL - Bằng cách nào đó, những người không hiểu regex và cách thức hoạt động phân chia có quyền biểu quyết. Hiểu các phương thức String là đủ. Hiểu ít nhất về cách mọi thứ hoạt động và mã lớn nhất thống trị thế giới: P Vì vậy, tôi đã thêm một lời giải thích từng bước cho câu trả lời phân tách (để thay đổi wolrd).

1
LoL - Việc chia tách có thể chấp nhận regex nên +1 vì không sử dụng split? LoL - Javascript sử dụng regex nên +1 vì không sử dụng Javascript? Làm thế nào nhiều mã và độ phức tạp có thể làm cho nó một nhiệm vụ đơn giản? Không phải cả regex và chia đơn giản và hiệu quả hơn sao?

293

Bạn cũng có thể sử dụng split()chức năng. Đây có vẻ là một trong những dễ dàng nhất đến với tôi :).

url.split('?')[0]

Trình diễn jsFiddle

Một lợi thế là phương thức này sẽ hoạt động ngay cả khi không có ?trong chuỗi - nó sẽ trả về toàn bộ chuỗi.


1
[0] làm gì trong tình huống này?
Dejan.S

13
splittrả về một mảng (trong trường hợp này nó có hai phần tử 01) và [0]lấy phần tử đầu tiên của mảng được trả về.
kapa

41
+1, điều tốt nhất về điều này là nó luôn hoạt động, ngay cả khi không có '?'
Kevin

Chúng ta nên làm gì nếu muốn tách '\'?
anud33p

1
Yêu câu trả lời này, thật đơn giản và thực sự mạnh mẽ trong những gì nó mang lại cho bạn
Richlewis

19
var href = "/Controller/Action?id=11112&value=4444";
href = href.replace(/\?.*/,'');
href ; //# => /Controller/Action

Điều này sẽ hoạt động nếu nó tìm thấy một '?' và nếu nó không


cái này sẽ loại bỏ '?' và một số người khác để OP không yêu cầu
Kevin

4
Điều này sẽ xóa tất cả mọi thứ sau ?(bao gồm)
mcont

2
TRẢ LỜI TỐT NHẤT ! OP đã yêu cầu xóa MỌI THỨ sau ?và tuyên bố rõ ràng để xóa ?cũng bằng cách nói: Tôi muốn href chỉ là / Bộ điều khiển / Hành động

3

Nếu bạn cũng muốn giữ "?" và chỉ cần xóa mọi thứ sau ký tự cụ thể đó, bạn có thể làm:

var str = "/Controller/Action?id=11112&value=4444",
    stripped = str.substring(0, str.indexOf('?') + '?'.length);

// output: /Controller/Action?

Điều này không hoạt động nếu chuỗi không chứa a?
Stephan bijzitter

@StephanBijzitter Có tôi biết. Vì câu trả lời của tôi nói: "nếu bạn cũng muốn giữ ? " - rõ ràng phải có một dấu hỏi trong chuỗi để giữ ..
patad

Thật kỳ lạ, dường như bình luận của tôi có ý nghĩa cho câu trả lời khác của @Imran. Không biết tại sao tôi đăng nó trên câu trả lời của bạn.
Stephan bijzitter

1

Có thể là bữa tiệc rất muộn: p

Bạn có thể sử dụng tham chiếu trở lại $ '

$' - Inserts the portion of the string that follows the matched substring.

let str = "/Controller/Action?id=11112&value=4444"

let output = str.replace(/\?.+/g,"$'")

console.log(output)


1

Nó hoạt động với tôi rất độc đáo:

var x = '/Controller/Action?id=11112&value=4444';
var remove_after= x.indexOf('?');
var result =  x.substring(0, remove_after);
alert(x);

0

Đã làm cho tôi:

      var first = regexLabelOut.replace(/,.*/g, "");

-2

Nó có thể được thực hiện dễ dàng bằng cách sử dụng JavaScript để tham khảo xem chuỗi JS liên kết

EDIT nó có thể dễ dàng thực hiện như. ;)

var url="/Controller/Action?id=11112&value=4444 ";
var parameter_Start_index=url.indexOf('?');
var action_URL = url.substring(0, parameter_Start_index);
alert('action_URL : '+action_URL);
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.