2011-12-03 36 views
11

Tôi đang gặp sự cố khi tìm hiểu điều này. Tôi cần phải "sửa chữa" một số liên kết, đây là một ví dụ:Xóa văn bản khỏi chuỗi cho đến khi nó đạt đến một ký tự nhất định

  1. www.site.com/link/index.php?REMOVETHISHERE
  2. www.site.com/index.php?REMOVETHISHERE

Vì vậy, về cơ bản tôi muốn xóa mọi thứ cho đến khi nó đạt đến? tính cách. Cảm ơn bạn đã giúp đỡ.

+0

Bạn có thể đảm bảo chỉ có một '?' trong chuỗi của bạn? –

+0

Vâng. Parapura đã đăng những gì tôi muốn, cảm ơn bạn. –

+0

@DanielMallott: nếu đó là url hợp lệ, nó * có * chỉ một '?' ... – Fischermaen

Trả lời

18
string s = @"www.site.com/link/index.php?REMOVETHISHERE"; 
s = s.Remove(s.LastIndexOf('?')); 
//Now s will be simply "www.site.com/link/index.php" 

nên làm điều đó

+1

Cảm ơn bạn, chính xác những gì tôi muốn. Tôi là một tên ngốc. Tôi sẽ chấp nhận nó trong 9 phút. –

+0

nitpicking, nhưng 'IndexOf' có lẽ sẽ thích hợp hơn với' LastIndexOf' – minnow

+0

@minnow tại sao ??? Nếu chuỗi có nhiều hơn một '?' OP có lẽ muốn cái cuối cùng –

2

Sử dụng string.split.

string URL = "www.site.com/link/index.php?REMOVETHISHERE" 
var parts = URL.Split('?'); 

Sau đó parts[0] sẽ chứa "www.site.com/link/index.php" và parts[1] sẽ chứa "REMOVETHISHERE". Sau đó, bạn có thể sử dụng phần nào bạn muốn.

Bạn nên thêm kiểm tra để đảm bảo rằng có hai phần trước khi cố truy cập phần tử thứ 2 của mảng. Bạn có thể (ví dụ) kiểm tra xem chuỗi có chứa "?" trước khi cố gắng gọi Split.

3

Mặc dù hoạt động chuỗi được tạo thủ công đúng cách sẽ hoạt động, cách tổng quát hơn để trích xuất thông tin URI một phần là sử dụng loại System.Uri có các phương pháp đóng gói các hoạt động này, ví dụ:

var uri = new Uri("http://www.site.com/link/index.php?REMOVETHISHERE"); 
var part = uri.GetLeftPart(UriPartial.Path); 

Điều này sẽ truyền đạt ý định mã của bạn rõ ràng hơn và bạn sẽ được tái sử dụng bản triển khai hiện tại được biết là hoạt động.

Nhà xây dựng System.Uri sẽ ném một ngoại lệ nếu chuỗi không đại diện cho URI hợp lệ, nhưng bạn có thể sẽ muốn gọi một số hành vi khác trong chương trình của bạn nếu gặp phải URI không hợp lệ. Để phát hiện URI không hợp lệ, bạn có thể bắt ngoại lệ hoặc sử dụng một trong các quá tải TryCreate().

0

Để xóa "?" Cuối cùng? và mọi thứ sau nó:

string input = @"www.site.com/link/index.php?REMOVETHISHERE"; 
    input = input.Remove(input.LastIndexOf('?')); 

    OR 

    string input = @"www.site.com/link/index.php?REMOVETHISHERE"; 
    input = input.Substring(0, input.LastIndexOf('?')); 

Bây giờ đầu ra sẽ là:

www.site.com/link/index.php 
Các vấn đề liên quan