Вы можете попробовать использовать регулярные выражения, что-то вроде этого:
// Possible operations
Dictionaty<String, Func<int, int, int, MyObject>> operations =
new Dictionaty<String, Func<int, int, int, MyObject>>() {
{"Cube.Attach", (x, y, z) => Cube.Attach(x, y, z);},
{"Tree.Attach", (x, y, z) => Tree.Attach(x, y, z);},
{"Plain.Attach", (x, y, z) => Plain.Attach(x, y, z);},
{"Terrain.Attach", (x, y, z) => Terrain.Attach(x, y, z);},
...
}
...
// Please, notice spaces and minus sign (-125)
String source = ":Cube.Attach(100, 18, -125);";
...
String pattern = @"^:(?<Func>[A-Za-z.]+)\((?<Args>.+)\);$";
Match match = Regex.Match(source, pattern);
if (match.Success) {
// Operation name - "Cube.Attach"
// Comment it out if you don't want it
String func = match.Groups["Func"].Value;
// Operation arguments - [100, 18, -125]
int[] args = match.Groups["Args"].Value
.Split(',')
.Select(item => int.Parse(item, CultureInfo.InvariantCulture))
.ToArray();
// Let's find out proper operation in the dictionary and perform it
// ... or comment it out if you don't want perform the operation here
operations[func](args[0], args[1], args[2]);
}
В случае, если вы хотите разделить "(0,0,0)"
у вас нет необходимости в регулярных выражениях, так Split
и Trim
достаточно:
String source = "(100, 18, -125)";
// [100, 18, -125]
int[] args = source
.Trim('(', ')')
.Split(',')
.Select(item => int.Parse(item, CultureInfo.InvariantCulture))
.ToArray();
// finally, if you need it
int x = args[0];
int y = args[1];
int z = args[2];
либо использовать регулярные выражения или простой формат файла, в котором каждый v ector находится в новой строке, а числа разделяются пробелами, таким образом вы можете просто использовать 'string.split'. В любом случае, для более сложных данных вы не должны использовать txt-файлы в любом случае. Вам лучше использовать XML. – TheDjentleman
* «проблема возникает, когда у меня есть двойное целое число diggit» * - в чем проблема? Исключение? Что-то не работает? Можете ли вы показать свой код, дать примерный ввод и показать произведенный и ожидаемый результат? – Sinatr
Это формат, который я должен использовать, так как моя программа также ищет, существует ли метод Attach в этом примере. Тогда я буду использовать регулярные выражения. Спасибо за ваш ответ – anthraxa