Что нового

[Данные, строки] Разделение данных на блоки

Kasper

Знающий
Сообщения
70
Репутация
8
Здравствуйте, есть переменная $string которой присвоено длинное цифровое значение
Код:
$string = '456797789798798789798756431943179734846456797789798798789798756431943179734846456797789798798789798756431943179734846846'

Как разделить его на блоки по 4 цифры
К примеру:
Код:
$string[0] = '30' ;Количество блоков (Не обязательно)
$string[1] = '4567'
$string[2] = '9778'
;...
$string[30] = '6846'


И есть переменная $text которой присвоен текст
Код:
Ехал Грека через реку. 
Видит Грека в реке рак. 
Сунул в реку руку Грека. 
Рак за руку Грека - цап.
Как разделить его по буквам то есть:
Код:
$text[0]  = '102' ; Кол-во символов (Не обязательно)

$text[1] = 'Е'
$text[2] = 'х'
;...
$text[5] = ' '
;...
$text[102] = '.'
 

InnI

AutoIT Гуру
Сообщения
4 446
Репутация
1 205
Код:
#include <Array.au3>

Global $string = '456797789798798789798756431943179734846456797789798798789798756431943179734846456797789798798789798756431943179734846846'
Global $idx = 1, $step = 4, $max = Ceiling(StringLen($string) / $step), $arr[$max + 1] = [$max]
For $i = 1 To StringLen($string) Step $step
  $arr[$idx] = StringMid($string, $i, $step)
  $idx += 1
Next

_ArrayDisplay($arr)

; ------------------------------------------

$text = "Ехал Грека через реку." & @CRLF & _
"Видит Грека в реке рак." & @CRLF & _
"Сунул в реку руку Грека." & @CRLF & _
"Рак за руку Грека - цап."
$arr = StringSplit($text, "")

_ArrayDisplay($arr)
 
Автор
K

Kasper

Знающий
Сообщения
70
Репутация
8
Огромное спасибо
 

alex33

Скриптер
Сообщения
1 457
Репутация
184
Код:
#include <Array.au3>
Global $string = '456797789798798789798756431943179734846456797789798798789798756431943179734846456797789798798789798756431943179734846846'

;1)
Global $aArray[1], $aRegexp
$aRegexp = StringRegExp($string, '(.{4})', 3)
If Not @error And IsArray($aRegexp) Then
	$aArray[0] = UBound($aRegexp)
	_ArrayConcatenate($aArray, $aRegexp)
EndIf

_ArrayDisplay($aArray)



;2) (проще, но отсчёт начинается не с 1, а с 0, в первую ячейку количество чисел не записывается)
Global $aArray
$aArray = StringRegExp($string, '(.{4})', 3)

_ArrayDisplay($aArray)
 
Верх