2012-02-20 14 views
9

Per un chat-bot, se qualcuno dice "! Say" reciterà quello che dici dopo lo spazio. Semplice.Dividere una stringa al primo spazio

ingresso Esempio:

!say this is a test 

uscita desiderata:

this is a test 

La stringa può essere rappresentato come s per amore della discussione. s.Split(' ') produce un array.

s.Split(' ')[1] è solo la prima parola dopo lo spazio, tutte le idee su tutto dividendo e ottenere tutte le parole dopo il primo spazio?

Ho provato qualcosa sulla falsariga di questo:

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

L'input che sono:

!say this is a test 

L'output:

!say 

che ovviamente non è quello che volevo : p

(So ​​che ci sono diverse risposte a questa domanda, ma nessuna scritta in C# da dove ho cercato.)

risposta

27

Utilizzare il sovraccarico di s.Split che ha un parametro "massimo".

E 'questo uno: http://msdn.microsoft.com/en-us/library/c1bs0eda.aspx

Assomiglia:

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

non dovrebbe la 's' in '(s, 2)' essere un char? –

+0

Sì, dovrebbe essere uno spazio. Correggere la risposta ... –

+5

Non c'è sovraccarico di presa divisa (char, int). Probabilmente intendevi 's.Split (new [] {''}, 2)' –

6

È possibile utilizzare il metodo string.Substring per questo:

s.Substring(s.IndexOf(' ')) 
2
var value = "say this is a test"; 
return value.Substring(value.IndexOf(' ') + 1); 
Problemi correlati