2013-04-05 34 views
8

Trong chuỗi để định dạng (chủ yếu là thay thế ký tự bằng các ký hiệu khác nhau để kiểm tra kết xuất trên giao diện người dùng), tôi phải phát hiện% và sau đó bỏ qua tất cả ký tự. % char này và nó phải được lặp lại cho tất cả các trường hợp trong chuỗi.Nhận chỉ mục của không gian được phát hiện đầu tiên sau một chỉ mục nhất định trong chuỗi

Ví dụ:abcd%1$s efgh %2$d ijkl. Trong chuỗi này, tôi phải lấy chỉ mục% và sau đó tìm chỉ mục của không gian đầu tiên từ đó. Về cơ bản, tôi phải bỏ qua số này %1$s & %2$d là một số loại trình giữ chỗ định dạng. Tôi hy vọng, tôi không đặt nó theo cách phức tạp ở đây.

Trả lời

16

Bạn có thể nhận được rằng khá dễ dàng, chỉ cần lấy chỉ số nếu ký hiệu phần trăm đầu tiên và sau đó tận dụng danh mục đó để tìm không gian đầu tiên từ đó:

var start = myString.IndexOf("%"); 
var spaceIndex = myString.IndexOf(" ", start) 

tất nhiên giá trị của myString là chuỗi bạn đại diện trong câu hỏi của bạn.

+0

Cảm ơn, đây là chính xác những gì tôi muốn làm. Tìm thêm thông tin [tại đây] (http://msdn.microsoft.com/en-us/library/7cct0x33.aspx). – Indigo

+0

@Chetan, tôi rất vui vì tôi có thể trợ giúp! –

-1

Sau đây là đơn giản nhất, và có thể mở rộng, cho yêu cầu của bạn "abcd%1$s efgh %2$d ijkl trong chuỗi này tôi phải bỏ qua %1$s & %2$d đó là một số loại placeholders định dạng."

string[] placeHolders = new string[] {"%1$s", "%2$d"}; 
string[] splits = "abcd%1$s efgh %2$d ijkl".Split(placeHolders, StringSplitOptions.None); 

mà sẽ cung cấp splits như ["abcd", "efgh", "ijkl"]

+0

Để đảm bảo bài đăng của bạn dễ đọc, bạn nên định dạng 'mã nội tuyến' bằng cách bao quanh chúng bằng' \ '' backticks' \ '' –

+0

@JonSurrell: bây giờ có tốt hơn không? – prassie

+0

có, nó được cải thiện –

Các vấn đề liên quan