C# HttpUtility.HtmlAttributeEncode 改用 js 实现

System.Web.HttpUtility.HtmlAttributeEncode() 的实现

private static void HtmlAttributeEncodeInternal(string value, HttpWriter writer)
    {
      int index = HttpEncoder.IndexOfHtmlAttributeEncodingChars(value, 0);
      if (index == -1)
      {
        writer.Write(value);
      }
      else
      {
        int length = value.Length;
        int num = 0;
        do
        {
          if (index > num)
            writer.WriteString(value, num, index - num);
          switch (value[index])
          {
            case '"':
              writer.Write(""");
              break;
            case '&':
              writer.Write("&");
              break;
            case '\'':
              writer.Write("'");
              break;
            case '<':
              writer.Write("&lt;");
              break;
          }
          num = index + 1;
          if (num < length)
            index = HttpEncoder.IndexOfHtmlAttributeEncodingChars(value, num);
          else
            goto label_6;
        }
        while (index != -1);
        goto label_13;
label_6:
        return;
label_13:
        writer.WriteString(value, num, length - num);
      }
    }

使用 js 实现此功能:

function HtmlAttributeEncode(str) {
	if (str) {
		const len = str.length;
		let i = 0;
		let s = str[i];
		let result = '';
		do {
			s = str[i];
			if (s === '"') {
				result += '&quot;';
			} else if (s === '&') {
				result += '&amp;';
			} else if (s === '\\') {
				result += '&#39;';
			} else if (s === '<') {
				result += '&lt;';
			} else {
				result += s;
			}
		} while (i++ < len - 1);
		return result;
	}
	return str;
}
posted @ 2024-09-04 11:50  灵火  阅读(18)  评论(0)    收藏  举报