Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 02.08.2015, 14:29
Интересующийся
Отправить личное сообщение для Palama Посмотреть профиль Найти все сообщения от Palama
 
Регистрация: 24.06.2015
Сообщений: 16

Как лучше сделать функцию обработки строки
Допустим есть потребность вывести спецсимволы.
можно сделать так
var entityMap = {
    "&": "&",
    "<": "&lt;",
    ">": "&gt;",
    '"': '&quot;',
    "'": '&#39;',
    "/": '&#x2F;'
  };

  function escapeHtml(string) {
    return String(string).replace(/[&<>"'\/]/g, function (s) {
      return entityMap[s];
    });
  }

alert(escapeHtml('<html>'));

т.е. объявились две левые сущности в пространстве имён

Вопрос: не лучше ли сделать так? В чем минусы такого способа?

String.prototype.escapeChars = function() { 
	String.prototype.entityMap = String.prototype.entityMap || {
		"&": "&amp;",
		"<": "&lt;",
		">": "&gt;",
		'"': '&quot;',
		"'": '&#39;',
		"/": '&#x2F;'
	 };
	return this.replace(/[&<>"'\/]/g, function (s) {return String.prototype.entityMap[s];});
}
  
alert('<html>'.escapeChars());

Последний раз редактировалось Palama, 02.08.2015 в 22:40.
Ответить с цитированием
  #2 (permalink)  
Старый 02.08.2015, 15:40
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,123

Сообщение от Palama
В чем минусы такого способа?
в нарушении синтаксиса
Ответить с цитированием
  #3 (permalink)  
Старый 02.08.2015, 22:43
Интересующийся
Отправить личное сообщение для Palama Посмотреть профиль Найти все сообщения от Palama
 
Регистрация: 24.06.2015
Сообщений: 16

это на этом прекрасном форуме нарушение синтаксиса, после того как делаешь предварительный просмотр и сохраняешь пост,
&#39;
заменяется на апостроф и скрипт становится неработоспособным.

я конечно оценил юмор ответа, но по существу есть что-нибудь? Где все эти господа теоретики, любители красоты кода?
Ответить с цитированием
  #4 (permalink)  
Старый 02.08.2015, 23:24
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

Palama,
Если код для внутреннего потребления, оберните всё в аноним
(function() {
var entityMap = {
    "&": "&amp;",
    "<": "&lt;",
    ">": "&gt;",
    '"': '&quot;',
    "'": '&#39;',
    "/": '&#x2F;'
  };

  function escapeHtml(string) {
    return String(string).replace(/[&<>"'\/]/g, function (s) {
      return entityMap[s];
    });
  }

alert(escapeHtml('<html>'));

}());

Если для наружного, типично вводят единый объект для сайта/форума, к примеру:
var FORUM = {}

И привязываются к нему,(те же BB-коды)
FORUM.BB_code={};FORUM.BB_code['B'];FORUM.BB_code['URL'];

Последний раз редактировалось Deff, 02.08.2015 в 23:26.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как сделать перенос строки в listview jQuery Mobile gargon2013 jQuery 0 17.07.2013 11:49
Как сделать как в JQ? faforty Общие вопросы Javascript 8 14.11.2011 01:35
Как обрезать строку и добавить символы в середине, в зависимости от длинны строки andreyua Firefox/Mozilla 12 10.12.2010 15:44
Как сделать такое fancy menu uonax Элементы интерфейса 2 22.05.2010 12:52
Как лучше решить проблему с парсингом строки alexKniaz Общие вопросы Javascript 2 05.11.2009 16:22