Что нового

Работа со строками

1111ssddas

Новичок
Сообщения
2
Репутация
0
Всем здравствуйте!
Сразу прошу прощения, что вынес вопрос в отдельную тему - может так не стоило.
Имеется такая задача для autoit: есть форма с двумя текстовыми полями и одной кнопкой. В первом поле текст вида:

Код:
Первая строка
Вторая строка
Третья строка
Четвертая строка
Пятая строка
Шестая строка
Надо при нажатии кнопки получить:
Код:
М Пятая строка/Третья строка/Первая строка/Шестая строка

То есть постановка строк в одну в произвольном порядке с добавлением символов в конец строк, которые были ранее. Ну и добавление текста в любое место новой строки. Выше - пример, строк может быть не шесть, разделитель может не такой. Это часть более обширной задачи. Спасибо, если направите в нужное русло
 

alex33

Скриптер
Сообщения
1,457
Репутация
186
Вот так пойдёт?
Код:
#include <Array.au3>
$lines = "строка один"&@CRLF&"строка два"&@CRLF&"строка три"&@CRLF&"строка четыре"
$arr =StringSplit($lines, @CRLF, 3)
_ArrayDisplay($arr, "test")
$str = _ArrayToString($arr, "/")
MsgBox(64, "test", $str))
 
Автор
1

1111ssddas

Новичок
Сообщения
2
Репутация
0
У меня текст в поле edit1. Строки с этого поля надо соединить в одну в произвольном порядке, исключив ненужные и разделив их разделителем. В начало полученой строки или в ее конец может понадобиться что то дописать
 

WSWR

AutoIT Гуру
Сообщения
941
Репутация
363
1111ssddas

Код:
#include <GuiConstantsEx.au3>
#include <Array.au3>

GUICreate('Окно', 360, 210)

$sTring = 'Первая строка' & @CRLF & _
		'Вторая строка' & @CRLF & _
		'Третья строка' & @CRLF & _
		'Четвертая строка' & @CRLF & _
		'Пятая строка' & @CRLF & _
		'Шестая строка'

$Input1 = GUICtrlCreateEdit($sTring, 20, 20, 260, 70, BitOR(0x0004, 0x0040))
$Input2 = GUICtrlCreateEdit('', 20, 120, 260, 70, BitOR(0x0004, 0x0040))

$b_Enter = GUICtrlCreateButton('Кнопка 1', 290, 20, 60, 20)

GUISetState()

While 1
	Switch GUIGetMsg()
		Case $b_Enter
			_S()
		Case $GUI_EVENT_CLOSE
			Exit
	EndSwitch
WEnd

Func _S()
	$aString = StringSplit(GUICtrlRead($Input1), @CRLF, 1)
	_ArrayDelete($aString, 0)
	_ArrayShuffleMultiDim($aString)
	GUICtrlSetData($Input2, _ArrayToString($aString, '/'))
EndFunc   ;==>_S

Func _ArrayShuffleMultiDim(ByRef $aArray)
	If IsArray($aArray) = 0 Then Return SetError(1)

	Local $iDim = UBound($aArray, 0) ; Get No dimensions
	If $iDim > 11 Then Return SetError(2)

	Local $a[$iDim + 1], $aiBound[12] = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
	For $i = 1 To $iDim ; For each dimensionn
		$aiBound[$i] = UBound($aArray, $i) - 1 ; Get dimension size
	Next

	For $i = 0 To $aiBound[1]
		For $j = 0 To $aiBound[2]
			For $k = 0 To $aiBound[3]
				For $l = 0 To $aiBound[4]
					For $m = 0 To $aiBound[5]
						For $n = 0 To $aiBound[6]
							For $o = 0 To $aiBound[7]
								For $p = 0 To $aiBound[8]
									For $q = 0 To $aiBound[9]
										For $r = 0 To $aiBound[10]
											For $s = 0 To $aiBound[11]
												For $z = 1 To $iDim
													; Get random values for each dimension.
													$a[$z] = Random(0, $aiBound[$z], 1)
												Next
												_Swap($aArray, $iDim, $a, $i, $j, $k, $l, $m, $n, $o, $p, $q, $r, $s)
											Next
										Next
									Next
								Next
							Next
						Next
					Next
				Next
			Next
		Next
	Next
EndFunc   ;==>_ArrayShuffleMultiDim

Func _Swap(ByRef $aArray, $iDim, $a, $i, $j, $k, $l, $m, $n, $o, $p, $q, $r, $s)
	Local $vTemp
	Switch $iDim
		Case 1
			$vTemp = $aArray[$i]
			$aArray[$i] = $aArray[$a[1]]
			$aArray[$a[1]] = $vTemp
		Case 2
			$vTemp = $aArray[$i][$j]
			$aArray[$i][$j] = $aArray[$a[1]][$a[2]]
			$aArray[$a[1]][$a[2]] = $vTemp
		Case 3
			$vTemp = $aArray[$i][$j][$k]
			$aArray[$i][$j][$k] = $aArray[$a[1]][$a[2]][$a[3]]
			$aArray[$a[1]][$a[2]][$a[3]] = $vTemp
		Case 4
			$vTemp = $aArray[$i][$j][$k][$l]
			$aArray[$i][$j][$k][$l] = $aArray[$a[1]][$a[2]][$a[3]][$a[4]]
			$aArray[$a[1]][$a[2]][$a[3]][$a[4]] = $vTemp
		Case 5
			$vTemp = $aArray[$i][$j][$k][$l][$m]
			$aArray[$i][$j][$k][$l][$m] = $aArray[$a[1]][$a[2]][$a[3]][$a[4]][$a[5]]
			$aArray[$a[1]][$a[2]][$a[3]][$a[4]][$a[5]] = $vTemp
		Case 6
			$vTemp = $aArray[$i][$j][$k][$l][$m][$n]
			$aArray[$i][$j][$k][$l][$m][$n] = $aArray[$a[1]][$a[2]][$a[3]][$a[4]][$a[5]][$a[6]]
			$aArray[$a[1]][$a[2]][$a[3]][$a[4]][$a[5]][$a[6]] = $vTemp
		Case 7
			$vTemp = $aArray[$i][$j][$k][$l][$m][$n][$o]
			$aArray[$i][$j][$k][$l][$m][$n][$o] = $aArray[$a[1]][$a[2]][$a[3]][$a[4]][$a[5]][$a[6]][$a[7]]
			$aArray[$a[1]][$a[2]][$a[3]][$a[4]][$a[5]][$a[6]][$a[7]] = $vTemp
		Case 8
			$vTemp = $aArray[$i][$j][$k][$l][$m][$n][$o][$p]
			$aArray[$i][$j][$k][$l][$m][$n][$o][$p] = $aArray[$a[1]][$a[2]][$a[3]][$a[4]][$a[5]][$a[6]][$a[7]][$a[8]]
			$aArray[$a[1]][$a[2]][$a[3]][$a[4]][$a[5]][$a[6]][$a[7]][$a[8]] = $vTemp
		Case 9
			$vTemp = $aArray[$i][$j][$k][$l][$m][$n][$o][$p][$q]
			$aArray[$i][$j][$k][$l][$m][$n][$o][$p][$q] = $aArray[$a[1]][$a[2]][$a[3]][$a[4]][$a[5]][$a[6]][$a[7]][$a[8]][$a[9]]
			$aArray[$a[1]][$a[2]][$a[3]][$a[4]][$a[5]][$a[6]][$a[7]][$a[8]][$a[9]] = $vTemp
		Case 10
			$vTemp = $aArray[$i][$j][$k][$l][$m][$n][$o][$p][$q][$r]
			$aArray[$i][$j][$k][$l][$m][$n][$o][$p][$q][$r] = $aArray[$a[1]][$a[2]][$a[3]][$a[4]][$a[5]][$a[6]][$a[7]][$a[8]][$a[9]][$a[10]]
			$aArray[$a[1]][$a[2]][$a[3]][$a[4]][$a[5]][$a[6]][$a[7]][$a[8]][$a[9]][$a[10]] = $vTemp
		Case 11
			$vTemp = $aArray[$i][$j][$k][$l][$m][$n][$o][$p][$q][$r][$s]
			$aArray[$i][$j][$k][$l][$m][$n][$o][$p][$q][$r][$s] = $aArray[$a[1]][$a[2]][$a[3]][$a[4]][$a[5]][$a[6]][$a[7]][$a[8]][$a[9]][$a[10]][$a[11]]
			$aArray[$a[1]][$a[2]][$a[3]][$a[4]][$a[5]][$a[6]][$a[7]][$a[8]][$a[9]][$a[10]][$a[11]] = $vTemp
	EndSwitch
EndFunc   ;==>_Swap
 

MnM

Post-Hardcore
Сообщения
679
Репутация
90
WSWR ооооо, как много то всего разве не хватило бы даже 1 цикла? :smile:
Код:
#include <GuiConstantsEx.au3>
#include <Array.au3>
GUICreate('Окно', 360, 210)
$sTring = 'Первая строка' & @CRLF & _
        'Вторая строка' & @CRLF & _
        'Третья строка' & @CRLF & _
        'Четвертая строка' & @CRLF & _
        'Пятая строка' & @CRLF & _
        'Шестая строка'
$Input1 = GUICtrlCreateEdit($sTring, 20, 20, 260, 70, BitOR(0x0004, 0x0040))
$Input2 = GUICtrlCreateEdit('', 20, 120, 260, 70, BitOR(0x0004, 0x0040))
$b_Enter = GUICtrlCreateButton('Кнопка 1', 290, 20, 60, 20)
GUISetState()
While 1
    Switch GUIGetMsg()
		Case $b_Enter
            __Swap()
		Case $GUI_EVENT_CLOSE
			Exit
    EndSwitch
WEnd
Func __Swap()
	Local $aS=StringSplit(GUICtrlRead($Input1),@LF,2)
	For $i=0 To UBound($aS)-1
		_ArraySwap($aS[Random(0,UBound($aS)-1)],$aS[Random(0,UBound($aS)-1)])
	Next
	GUICtrlSetData($Input2,_ArrayToString($aS,"\"))
EndFunc
 
Верх