Что нового

Разделение,замена строки и дописывание новых значений

S

ShAG1992D

Гость
Всем привет. Дана строка такого вида:

ADMINPC|-|10:15:12|-|27.06.2012

а нужно чтобы была такой
ИмяPC = ADMINPC
Время = 10:15:12
Дата = 27.06.2012

Пробовал сделать с помощью StringReplace заменяя символ '|-|' на @CRLF
но выходит не совсем так как хотелось бы. Хотел разобратся с функцией
StringRegExpReplace но это для меня это пока темный лес...
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
ShAG1992D,
Без рег. выражений.
Код:
$sText = 'ADMINPC|-|10:15:12|-|27.06.2012'
Dim $aRet[4] = [3, 'ИмяPC = ', 'Время = ', 'Дата = ']
$sRet = ''
$aTemp = StringSplit($sText, '|-|', 1)
If $aTemp[0] <> 3 Then Exit -33
For $i = 1 To $aTemp[0]
	$sRet &= $aRet[$i] & $aTemp[$i] & @CRLF
Next
MsgBox(64, 'Info', StringTrimRight($sRet, 2))
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
ShAG1992D [?]
если значений не 3 а больше
Сравните с первым вариантом.
Код:
$sText = 'ADMINPC|-|10:15:12|-|27.06.2012|-|Россия'
Dim $aRet[5] = [4, 'ИмяPC = ', 'Время = ', 'Дата = ', 'Страна = ']
$sRet = ''
$aTemp = StringSplit($sText, '|-|', 1)
If $aTemp[0] <> 4 Then Exit -33
For $i = 1 To $aTemp[0]
	$sRet &= $aRet[$i] & $aTemp[$i] & @CRLF
Next
MsgBox(64, 'Info', StringTrimRight($sRet, 2))
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
ShAG1992D [?]
как сделать чтобы все что находило возвращало?
Код:
#include<Array.au3>

_ArrayDisplay(_MyFunc('Имя PC = ,Время = ,Дата = , ID = ', 'ADMINPC|-|10:15:12|-|27.06.2012'))

Func _MyFunc($s_Data, $s_Str)

	$a_Data = StringSplit($s_Data, ',', 3)
	$a_Str = StringSplit($s_Str, '|-|', 3)
	
	If UBound($a_Data) > UBound($a_Str) Then
		ReDim $a_Str[UBound($a_Data)]
	Else
		ReDim $a_Data[UBound($a_Str)]
	EndIf
	   
	For $i = 0 To UBound($a_Data) - 1
		$a_Data[$i] &= $a_Str[$i]
	Next
	
	Return SetError(0, 0, $a_Data)
EndFunc ;==>_MyFunc
 
Верх