Что нового

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

sforce5

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

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
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,671
Репутация
2,481
Для этого обычно используется 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,322
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 & 'Вывод о том, какой язык, делайте сами :)')
 
Верх