2012-02-20 34 views
9

Đối với một bot trò chuyện, nếu ai đó nói "! Nói", nó sẽ đọc những gì bạn nói sau khoảng trắng. Đơn giản.Chia chuỗi tại không gian đầu tiên

Ví dụ đầu vào:

!say this is a test 

mong muốn đầu ra:

this is a test 

Các chuỗi có thể được biểu diễn như s vì lợi ích của các đối số. s.Split(' ') tạo ra một mảng.

s.Split(' ')[1] chỉ là từ đầu tiên sau không gian, bất kỳ ý tưởng nào về phân chia hoàn toàn và nhận được tất cả từ sau không gian đầu tiên?

Tôi đã thử một cái gì đó dọc theo dòng này:

s.Split(' '); 
for (int i = 0; i > s.Length; i++) 
{ 
    if (s[i] == "!say") 
    { 
     s[i] = ""; 
    } 
} 

Các đầu vào là:

!say this is a test 

Sản lượng:

!say 

Mà rõ ràng không phải là những gì tôi muốn : p

(Tôi biết có một số câu trả lời cho câu hỏi này, nhưng không có câu nào được viết bằng C# từ nơi tôi đã tìm kiếm.)

Trả lời

27

Sử dụng quá tải s.Split có thông số "tối đa".

Đó là này một: http://msdn.microsoft.com/en-us/library/c1bs0eda.aspx

Hình như:

var s = "!say this is a test"; 
var commands = s.Split (' ', 2); 

var command = commands[0]; // !say 
var text = commands[1];  // this is a test 
+0

nên không phải là 's' trong '(s, 2)' là một char? –

+0

Có, nó phải là một không gian. Đang sửa câu trả lời ... –

+5

Không có quá tải về việc lấy Split (char, int). Bạn có thể có nghĩa là 's.Split (new [] {''}, 2)' –

6

Bạn có thể sử dụng phương pháp string.Substring cho rằng:

s.Substring(s.IndexOf(' ')) 
2
var value = "say this is a test"; 
return value.Substring(value.IndexOf(' ') + 1); 
Các vấn đề liên quan