Если необходимо разбить на несколько разную длину: например, у вас есть дата и время в строке формата форматирования strangeStr = "07092016090532";
07092016090532 (Дата: 07.09.2016 Время: 09:05:32)
public static IEnumerable<string> SplitBy(this string str, int[] chunkLength)
{
if (String.IsNullOrEmpty(str)) throw new ArgumentException();
int i = 0;
for (int j = 0; j < chunkLength.Length; j++)
{
if (chunkLength[j] < 1) throw new ArgumentException();
if (chunkLength[j] + i > str.Length)
{
chunkLength[j] = str.Length - i;
}
yield return str.Substring(i, chunkLength[j]);
i += chunkLength[j];
}
}
, используя:
string[] dt = strangeStr.SplitBy(new int[] { 2, 2, 4, 2, 2, 2, 2 }).ToArray();
Это зависит от языка, но в языках стиля C %
имеет такой же приоритет, как *
и /
. Это означает, что если они появляются в одном и том же выражении (без круглых скобок), то порядок зависит от ассоциативности. В данном случае %
обычно лево-ассоциативен, поэтому операторы будут выполняться в порядке слева направо.
Если ваш вопрос касается языков программирования, тогда да,% имеет тот же порядок, что и * и /
См. в этой таблице .
Относительные уровни приоритета операторов, найденные во многих языках стиля C, следующие:
Оператор по модулю%, используемый во многих языках программирования, не является обычным явлением в чистой математике. Так что это скорее вопрос того, как оператор трактуется в языках программирования, и это различается для разных языков.
Для C ++ он имеет тот же приоритет, что и умножение и деление. Принимайте их по мере их поступления, слева направо.
По крайней мере, в C ++ и Java, modulo (%
) имеет тот же уровень приоритета, что и умножение и деление.
Поскольку %
, /
и *
(обычно) левоассоциативны, они оцениваются слева направо.