Что нового

Как грамотно указать номера строк для обработки

eus_deus

Новичок
Сообщения
83
Репутация
0
Доброго времени суток!
Что то не могу грамотно указать номера строк для обработки текстового файла (конечная цель - запись в конец определенных строк некоторого текста)
Но конечная задача - это просто _FileWtiteToLine, а я же не могу совладать с диапазоном номеров.
Посмотрите на код и ужаснитесь:
Код:
Func _read_lines_txt()
    Local $zx
    $n_stroka = '1,3,7-9'
    $a_stroka = StringSplit($n_stroka,',')
    For $i=1 To $a_stroka [0]
        If StringInStr($a_stroka[$i], '-') Then
            StringRegExpReplace($a_stroka[$i], '\s+', '')
            $qw=StringSplit($a_stroka[$i],'-')
            For $j=$qw[1] To $qw[2]
                If $j <= $qw[2] Then $zx&=$j&','
            Next  
        Else
            $zx&=$a_stroka[$i]&','
        EndIf
    Next
    $zx = StringTrimRight($zx, 1)
EndFunc


В общем, суть вопроса - как грамотно это
Код:
$n_stroka = '1,3,7-9'

перевести на это
Код:
$n_stroka = '1,3,7,8,9'
 

IMStrelcov

CTPEJIbLLOB
Сообщения
197
Репутация
38
Код:
$n_stroka = '1,3,7-9,67-89'

ConsoleWrite(GeatAllNum_($n_stroka)&@CRLF)

Func GeatAllNum_($s_Str)
    Local $i_A, $i_B, $s_Result, $a_Bands
    Local $a_Nums = StringRegExp($s_Str, '([0-9]+(?:-[0-9]+)?)', 3)
    For $i_A = 0 To UBound ($a_Nums) -1
        If StringRegExp($a_Nums[$i_A], '-') Then
            $a_Bands = StringRegExp($a_Nums[$i_A], '([0-9]+)', 3)
            For $i_B = $a_Bands[0] To $a_Bands[1]
                $s_Result &= $i_B & ','
            Next
        Else
            $s_Result &= $a_Nums[$i_A] & ','
        EndIf
    Next
    Return StringTrimRight($s_Result, 1)
EndFunc
 
Верх