Как сделать, чтобы получаемые символы на определенных местах записывались в, например, заранее оглашенные переменные?
Для этого строку нужно разобрать, выделить интересующие подстроки и положить их в нужные переменные самостоятельно. Никакой магии, которая сделает это за Вас, нет. В этом смысле нет никакой разницы, откуда пришла строка: из вебсокета, с консоли или еще откуда-то :)
Сделать это можно регулярками, циклами или любым другим замысловатым способом, но, прежде, чем это делать, нужно понять, что именно делать. А тут возможны варианты.
1. Строка именно такая, как описано в вопросе, и изменить ее нет возможности, т.к. ее посылает "чужой" код.
Тогда нужно описать структуру разделителей интересующих частей регулярным выражением (если она вообще регулярна) и выделять их регуляркой, например, так:
string[] tokens = Regex.Split("Change position: F1-F2", @"(: )|(-)", RegexOptions.ExplicitCapture);
if( tokens.Length == 3 && string.Equals(tokens[0], "Change position") )
{
curPos = tokens[1];
newPos = tokens[2];
} else {
// прислали какую-то непонятную хрень...
}
Поиграться, потестировать регулярки самостоятельно и посмотреть, что они могут разобрать, а что нет, можно, например,
вот тут.
2. Строку можно определить самостоятельно.
Тогда лучше придумать протокол (конкретнее, формат строки), который было бы легко разбирать. Например:
event:cur-position:new-position
т.е. для данного примера посылать:
"Change position:F1:F2"
Такую строку можно разобрать элементарным
string[] tokens = "Change position:F1:F2".Split(':');
if( tokens.Length == 3 && string.Equals(tokens[0], "Change position") )
{
curPos = tokens[1];
newPos = tokens[2];
} else {
// прислали какую-то непонятную хрень...
}
И в том, и в другом случае нужно помнить, что к вебсокету, в принципе, может подключиться не только "наш" клиент, но и вообще любой проказник и послать туда что-то, чего мы совсем не ожидаем. Соответственно, перед тем, как тупо разбирать, строку хорошо бы еще проверить на корректность и, по крайней мере, обработать возможные ошибки при разборе (этого в приведенном примере кода нет - задание для самостоятельного изучения).