Замена HTML мнемоник и кодов средствами 1С

Функция поможет заменить HTML коды и мнемоники в строке средставми самой платформы 1С

Функция ЗаменаHTMLКодов(Знач ВходящаяСтрока)
	
	Подстроки = СтрРазделить(ВходящаяСтрока,"&;");
	Если Подстроки.Количество() < 3 Тогда 
		Возврат ВходящаяСтрока;
	КонецЕсли;
	
	//https://ru.wikipedia.org/wiki/%D0%9C%D0%BD%D0%B5%D0%BC%D0%BE%D0%BD%D0%B8%D0%BA%D0%B8_%D0%B2_HTML
	Мнемоники = Новый Соответствие;
	Мнемоники.Вставить("dollar",	"$");
	Мнемоники.Вставить("commat",	"@");
	Мнемоники.Вставить("sharp",		"#");
	Мнемоники.Вставить("num",		"!");
	Мнемоники.Вставить("sharp",		"#");
	Мнемоники.Вставить("percnt",	"%");
	Мнемоники.Вставить("amp",		"&");
	Мнемоники.Вставить("lpar",		"(");
	Мнемоники.Вставить("rpar",		")");
	Мнемоники.Вставить("ast",		"*");
	Мнемоники.Вставить("sol",		"/");
	Мнемоники.Вставить("colon",		":");
	Мнемоники.Вставить("semi",		";");
	Мнемоники.Вставить("quest",		"?");
	Мнемоники.Вставить("quot",		"""");
	Мнемоники.Вставить("apos",		"'");
	Мнемоники.Вставить("laquo",		"«");
	Мнемоники.Вставить("raquo",		"»");
	Мнемоники.Вставить("lsaquo",	"<");
	Мнемоники.Вставить("rsaquo",	">");
	Мнемоники.Вставить("plus",		"+");
	Мнемоники.Вставить("minus",		"-");
	Мнемоники.Вставить("times",		"*");
	Мнемоники.Вставить("lt",		"<");
	Мнемоники.Вставить("gt",		">");   		
	Мнемоники.Вставить("deg",		"°");   		
	Мнемоники.Вставить("comma",		",");   		
	Мнемоники.Вставить("equals",	"=");
	Мнемоники.Вставить("hat",		"^");
	Мнемоники.Вставить("verbar",	"|");
	Мнемоники.Вставить("vert",		"|");
	Мнемоники.Вставить("lcub",		"{");
	Мнемоники.Вставить("rcub",		"{");
	Мнемоники.Вставить("rbrace",	"}");
	Мнемоники.Вставить("tab",		"	");
	Мнемоники.Вставить("newline",	Символы.ПС); 
			
	Для каждого Стр из Подстроки Цикл
		
		Если СтрНайти(Стр, " ") > 0 ИЛИ ПустаяСтрока(Стр) ИЛИ СтрДлина(Стр) > 10 Тогда
			Продолжить;
		КонецЕсли; 
		
		Если СтрНачинаетсяС(Стр,"#") Тогда
			
			Попытка
				КодСимвола = Число(Сред(Стр,2));
				Символ = Символ(КодСимвола);
			Исключение
				Продолжить;	   
			КонецПопытки;			
			
			ВходящаяСтрока = СтрЗаменить(ВходящаяСтрока, СтрШаблон("&#%1;",Стр), Символ);
			
		Иначе 
			
			Замена = Мнемоники.Получить(НРег(Стр));
			Если НЕ Замена = Неопределено Тогда
				ВходящаяСтрока = СтрЗаменить(ВходящаяСтрока, СтрШаблон("&%1;",Стр), Замена);
			КонецЕсли;
			
		КонецЕсли;							
		
	КонецЦикла; 	
	
	Возврат ВходящаяСтрока;

КонецФункции 

Подписаться
Уведомить о
guest
0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии