Что нового

Поиск символов в строке

SET777

Новичок
Сообщения
51
Репутация
3
Здравствуйте! Меня интересует как в цикле, в строке, можно найти например символ "о" и вывести каждый найденный символ сообщением с номером найденного символа. Например "о 1", "о 2" и.т.д. И для полноты понимания работы цикла приведите пожалуйста отдельный пример работы цикла который просто выводит каждый символ строки сообщением(с комментариями работы цикла ).
Код:
$var = ("AutoIt v3 - это язык для написания сценариев, напоминающий BASIC и предназначенный для автоматизации Windows GUI")
$len = StringLen($var)
$mid = StringMid ($var, 1, $len)
For $i = 1 To $len
	If  StringInStr($mid,"о") <> 1 Then
        MsgBox(0,"",$i)
	EndIf
 Next
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
SET777
Попробуйте так:
Код:
$sString = 'AutoIt v3 - это язык для написания сценариев, напоминающий BASIC и предназначенный для автоматизации Windows GUI'
$iLen = StringLen($sString)
$j = 0
For $i = 1 To $iLen
	$iSearch = StringInStr($sString, 'о', 0, $i) ; 'о' - русская
	If $iSearch Then
		$j += 1
		MsgBox(64, 'Найдено всего: ' & $j, 'Позиция буквы "o": ' & $iSearch)
	EndIf
Next
MsgBox(64, 'Info', 'Найдено всего букв "o": ' & $j)
 

gregaz

AutoIT Гуру
Сообщения
1,166
Репутация
299
Поскольку в условии нет задания номера позиции, то задачу можно выполнить проще:
Код:
$Letter="о"
$var = ("AutoIt v3 - это язык для написания сценариев, напоминающий BASIC и предназначенный для автоматизации Windows GUI")
$sRez=StringRegExpReplace ( $var ,'[^' & $Letter & ']','' ); Удаляем все символы,отличные от заданного
For $i=1 To StringLen($sRez)
     MsgBox(0,'',$Letter &" "& $i,1)
Next
MsgBox(0,'',"Найдено совпадений : " & $i-1)
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
Или так:
Код:
$sString = 'AutoIt v3 - это язык для написания сценариев, напоминающий BASIC и предназначенный для автоматизации Windows GUI'
$aTemp = StringRegExp($sString, 'о', 3)
MsgBox(64, 'Info', 'Найдено всего букв "o": ' & UBound($aTemp))
;или
StringReplace($sString, 'о', '')
MsgBox(64, 'Info', 'Найдено всего букв "o": ' & @extended)
 
Верх