Что нового

[Данные, строки] Как сделать транслитерацию

vaf

Новичок
Сообщения
190
Репутация
2
Подскажите как через регулярные выражение сделать из "Строка на русском языке" строку "stroka-na-russkom-jazyke"
 

gregaz

AutoIT Гуру
Сообщения
1,166
Репутация
299
Это не делается через регулярные выражения.
Можно сделать так :
Код:
$sStr="Строка на русском языке"
$sLat=StringTranslit($sStr)
MsgBox(0,'',$sStr & @CRLF & $sLat)


Func StringTranslit($str)
	$rus="А,Б,В,Г,Д,Е,Ж,З,И,Й,К,Л,М,Н,О,П,Р,С,Т,У,Ф,Х,Ц,Ч,Ш,Щ,Ь,Ы,Э,Ю,Я,а,б,в,г,д,е,ж,з,и,й,к,л,м,н,о,п,р,с,т,у,ф,х,ц,ч,ш,щ,ь,ы,э,ю,я"
	$arRus=StringSplit($rus, ",")
	$lat="A,B,V,G,D,E,Zg,Z,I,J,K,L,M,N,O,P,R,S,T,U,F,H,C,Ch,Sh,S',',I',E',Ju,Ja,a,b,v,g,d,e,zg,z,i,j,k,l,m,n,o,p,r,s,t,u,f,h,c,ch,sh,s',',i',e',ju,ja,"
	$arLat=StringSplit($lat, ",")

	$len=StringLen($str)
	$newStr=''
	For $i=1 To $len
		$a=StringMid( $str, $i,1 )
		For $j=1 To 60
			If Asc($a)=Asc($arRus[$j]) Then
				$a=$arLat[$j]
				ExitLoop		
			EndIf
		Next
		$newStr=$newStr&$a
	Next

	Return $newStr
EndFunc
 
Верх