Что нового

[RegExp] Как определить тип строки [RU or EN]

sforce5

Олл фо ЛулзЪ
Сообщения
160
Репутация
41
Ка при помощи StringInStr RegExp определить тип строки (на русском или на английском накарябано напечатано)?
 

madmasles

Модератор
Глобальный модератор
Сообщения
7 790
Репутация
2 319
sforce5
У меня так получилось:
Код:
$sStringRU = 'Определить тип строки на русском или на английском языке.'
$iCheckRU = StringRegExp($sStringRU, '[а-я,А-Я]', 0)
If $iCheckRU Then
	MsgBox(0, 'RU', 'Rus')
Else
	MsgBox(0, 'No RU', ' No Rus')
EndIf

$sStringEN = 'AutoIt v3 is a freeware BASIC-like scripting language designed for automating the Windows GUI and general scripting.'
$iCheckEN = StringRegExp($sStringEN, '[a-z,A-Z]', 0)
If $iCheckEN Then
	MsgBox(0, 'EN', 'EN')
Else
	MsgBox(0, 'No EN', ' No EN')
EndIf
 
Автор
sforce5

sforce5

Олл фо ЛулзЪ
Сообщения
160
Репутация
41
А как насчёт присутствия в строке посторонних символов, вроде ',\.\!' тысячи их
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8 473
Репутация
2 403
Для этого обычно используется StringIsASCII.

А через RegExp можно также проверять не смешан ли текст:

Код:
$sString = 'Русский и English.'
;$sString = 'Русский.'
;$sString = 'English.'

$iOnlyRu = StringRegExp($sString, '(?i)^[^a-z]+[а-яА-Я]+[^a-z]+$')
$iOnlyEn = StringRegExp($sString, '(?i)^[^а-яА-Я]+[a-z]+[^а-яА-Я]+$')
$iRuAndEn = StringRegExp($sString, '(?i)([а-яА-Я]+.*[a-z]|[a-z]+.*[а-яА-Я])')


$sString = StringFormat('Rus Only:\t\t%s\nEng Only:\t\t%s\nRus and Eng:\t%s', $iOnlyRu, $iOnlyEn, $iRuAndEn)

MsgBox(64, '', $sString)
 

madmasles

Модератор
Глобальный модератор
Сообщения
7 790
Репутация
2 319
sforce5
Можно еще так попробовать:
Код:
$sString = '/\Определить!"№;% тип:?*() строки <>|\\/.,на русском или на английском языке. AutoIt~`@#$%^&*()'
$aRU = StringRegExp($sString, '[а-яА-Я]', 3)
$aEN = StringRegExp($sString, '[a-zA-Z]', 3)
$iCheckRU = UBound($aRU)
$iCheckEN = UBound($aEN)
MsgBox(0, 'Тест', 'В Вашем тексте:' & @CRLF & 'русских букв: ' & $iCheckRU & ' штук.' & @CRLF & _
		'английских букв: ' & $iCheckEN & ' штук.' & @CRLF & 'Вывод о том, какой язык, делайте сами :)')
 
Верх