Ну, вот regex, в котором Вы будете нуждаться...
^[A-Fa-f0-9]{32}$|^({|\\()?[A-Fa-f0-9]{8}-([A-Fa-f0-9]{4}-){3}[A-Fa-f0-9]{12}(}|\\))?$|^({)?[0xA-Fa-f0-9]{3,10}(, {0,1}[0xA-Fa-f0-9]{3,6}){2}, {0,1}({)([0xA-Fa-f0-9]{3,4}, {0,1}){7}[0xA-Fa-f0-9]{3,4}(}})$
, Но это только для начинающих. Необходимо будет также проверить, что различные части, такие как дата/время в допустимых диапазонах. Я не могу вообразить этот являющийся немного быстрее, чем метод попытки/выгоды, который Вы уже обрисовали в общих чертах. Надо надеяться, Вы не получаете это много недопустимых GUID для гарантирования этого типа проверки!
Это можно сделать двумя способами:
Использование оператора двоеточия :
startValue = 1;
endValue = 10;
nElements = 20;
stepSize = (endValue-startValue) / (nElements-1);
A = startValue: stepSize: endValue;
Использование функции linspace
(как было предложено Амро ):
startValue = 1;
endValue = 10;
nElements = 20;
A = linspace (startValue, endValue, nElements);
Имейте в виду, что количество элементов в результирующих массивах включает конечных точек. В приведенных выше примерах разница между значениями элементов массива будет 9/19
или немного меньше, чем 0,5
(в отличие от образца массива в вопросе).
linspace генерирует линейно разнесенные векторы:
>> A = linspace(1, 10, 20-1)
ans =
1 1.5 2 2.5 3 3.5 ... 9.5 10
Простой однострочник!
1:0.5:10;
Вывод:
1 1.5 2 2.5 ... 9 9.5 10
Обратите внимание, что это будет 19-элементный вектор, а не 20.