Что нового

Как добавить n-ое количество одинаковых символов в конец строки?

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
Друзья, подскажите самый простой способ добавить произвольное количество (от 0 до $Count) точек в конец строки. Например

"Scaning"
"Scaning."
"Scaning.."
"Scaning..."
и т.д.
 

Medic84

Омега
Команда форума
Администратор
Сообщения
1,590
Репутация
341
Код:
$Dot = ""
$iRandom = Random(0,5)
For $i = 1 to $iRandom
 $Dot &= "." ;не помню chr код точки
Next
$String = $text & $Dot
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,673
Репутация
2,486
Код:
#include <String.au3>

$sStr = "Scaning" & _StringRepeat(".", 3)
ConsoleWrite($sStr & @LF)
 
Автор
Yashied

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
Ммм... Я хотел с помощью StringRegExpReplace(), поэтому и разместил вопрос в этом разделе.

:whistle:
 

ArtInt

Знающий
Сообщения
135
Репутация
18
Yashied, :-[
...самый простой? Пока в голову не приходит ничего кроме :scratch:
[box title=Easiest Sript1]
Код:
$Count = Number(Inputbox ("title","Enter the number!"))
$text = "some text here"
$n = Random (0,$Count)
For $i = 1 to $n
$text = $text&"."
Next
GUICtrlCreateLabel($text, $left, $top)

[/box]
P.S. Извиняюсь, пока печатал ещё ответы появились :(
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,673
Репутация
2,486
Тогда так:

Код:
$sString = 'String'
$iCount = 3

For $i = 0 To $iCount - 1
	$sString = StringRegExpReplace($sString, '(\.$|[^.]$)', '\1.')
Next

ConsoleWrite("Result: " & $sString & @LF)
 
Автор
Yashied

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
asdf8 сказал(а):
Регэкспами не выйдет.

:(

Хотелось бы как-то так, только попроще:

Код:
$Count = 3
ConsoleWrite(StringReplace('Scaning' & StringFormat('%' & $Count & 's', ''), ' ', '.') & @CR)
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,673
Репутация
2,486
ArtInt [?]
пока печатал ещё ответы появились
Когда отправляешь сообщение, видно предупреждение о том что в теме есть непрочитанные тобой ответы, т.ч присматривайся к предупреждениям.
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,673
Репутация
2,486
Тогда по моему ты ошибся разделом, это не требует решения с RegExp.

Можешь просто использовать функцию, проще этого думаю не будет:

Код:
$sString = 'Scaning' &  _Dots(3)
ConsoleWrite($sString & @LF)

Func _Dots($iCount)
	Return StringReplace(StringFormat('%' & $iCount & 's', ''), ' ', '.')
EndFunc
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
Yashied,
Можно так попробовать.
Код:
HotKeySet('{Esc}', '_Exit')
While 1
	For $i = 1 To 5
		Sleep(200)
		ConsoleWrite(_Append('Подождите, пока Test закончится.', 'Test', '.', $i) & @LF)
	Next
	For $i = 4 To 0 Step -1
		Sleep(200)
		ConsoleWrite(_Append('Подождите, пока Test закончится.', 'Test', '.', $i) & @LF)
	Next
WEnd

Func _Append($s_Text, $s_String, $s_Add, $i_Number, $f_Start = False)
	Local $s_AddString
	If Not StringInStr($s_Text, $s_String) Then Return $s_Text
	$i_Number = Number($i_Number)
	If Not $i_Number Then Return $s_Text
	For $i = 1 To $i_Number
		$s_AddString &= $s_Add
	Next
	If $f_Start Then Return StringReplace($s_Text, $s_String, $s_AddString & $s_String)
	Return StringReplace($s_Text, $s_String, $s_String & $s_AddString)
EndFunc   ;==>_Append

Func _Exit()
	Exit
EndFunc   ;==>_Exit
 
Автор
Yashied

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724

gregaz

AutoIT Гуру
Сообщения
1,166
Репутация
299
Еще один изврат :
Код:
$sText = "Scaning"
$n20="...................."
$iCount=5
$sPatern = "([^.]+\.{" & $iCount & "}).+"
$sResult = StringRegExpReplace( $sText & $n20, $sPatern, '\1' )
MsgBox(4096, ' Test Result', $sResult)
 
Верх