Что нового

Ищу лучшую функцию для вставки данных в строку

inververs

AutoIT Гуру
Сообщения
2,135
Репутация
465
Стандартной функции StringInsert нету :shok:
Но хочется.
Есть строка 'aaaabbbb'
Нужно вставить 'с' в 4 позицию так, что бы получилось 'aaaaсbbbb'
Есть у кого идеи? ;)
 

MnM

Post-Hardcore
Сообщения
679
Репутация
90
inververs
Может все таки "вурдалаковский" метод, но мне так показалось легче :smile:
Код:
Global $Str="aaaabbbb"
MsgBox(0,'',__StringInsert($Str,"c",4))
Func __StringInsert($String,$ins,$Position)
	Local $aString=StringSplit($String,""),$ReturnStr
	For $i=1 To $aString[0]
		If $i=$Position Then
			$aString[$i]&=$ins
		EndIf
	Next
	For $i=1 To $aString[0]
		$ReturnStr&=$aString[$i]
	Next
	Return $ReturnStr
EndFunc
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
inververs,
Без проверки корректности позиции.
Код:
Local $sStr =  'aaaabbbb', $sInsert = 'c', $iPos = 4, $sNewStr

$sNewStr = StringLeft($sStr, $iPos) & $sInsert & StringTrimLeft($sStr, $iPos)
ConsoleWrite($sNewStr & @LF)
Или не придумывать ничего, а использовать штатную
Код:
_StringInsert()
 

Yuri

AutoIT Гуру
Сообщения
737
Репутация
282
Как-то так вот получилось
Код:
$Str = "aaaabbbb"
$x = "c"
$LenStr = StringLen($Str)

If $LenStr < 4 Then
   MsgBox(16, "Ошибка", "Строка содержит менее 4 символов")
   Exit
EndIf

If $LenStr = 4 Or $LenStr > 4 Then
   $NewStr_1 = StringMid($Str, 1, 4)
   $NewStr_2 = StringMid($Str, 5)
   $NewStr = $NewStr_1 & $x & $NewStr_2
   MsgBox(64, "", $NewStr)
EndIf
 

MaximK

Знающий
Сообщения
33
Репутация
5
Как нету? :laugh: А String.au3 и функция _StringInsert
 

firex

AutoIT Гуру
Сообщения
943
Репутация
208
Код:
$str = 'aaaabbbb'
$in = 4
$str = StringLeft( $str, $in ) & 'c' & StringMid( $str, $in, StringLen( $str ) )
 
Верх