首页 > 编程语言 >C# HttpUtility.HtmlAttributeEncode 改用 js 实现

C# HttpUtility.HtmlAttributeEncode 改用 js 实现

时间:2024-09-04 11:47:01浏览次数:10  
标签:index num C# writer value js Write HttpUtility str

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;
}

标签:index,num,C#,writer,value,js,Write,HttpUtility,str
From: https://www.cnblogs.com/fires/p/18396166

相关文章

  • C#设计模式入门实战教程
    思维导航什么是设计模式设计模式的作用设计模式分类创建型模式(CreationalPatterns)结构型模式(StructuralPatterns)行为型模式(BehavioralPatterns)C#实现的设计模式示例代码推荐学习书籍项目源码地址优秀项目和框架精选什么是设计模式设计模式是对面向对象设计中......
  • PLC结构化文本(ST)——This&Super(关键字)
    PLCStructuredTextObjectOrientedProgrammingPLC结构化文本(ST)——This&Super(关键字)关键字This和Super是什么?this是自身的一个对象,代表对象本身,可以理解为:指向对象本身的一个指针。super可以理解为是指向自己超(父)类对象的一个指针,而这个超类指的是离自己最近的一个父类......
  • 前端项目实战Uniapp移动端项目+Vue3+Typescript+AntdVue管理平台
    ‌前端项目实战:‌构建Uniapp移动端项目与Vue3+Typescript+AntdVue管理平台‌在当今的前端开发领域,‌技术的不断迭代和创新为开发者带来了更多的选择和可能性。‌本文将介绍如何使用Uniapp框架开发移动端项目,‌并结合Vue3、‌Typescript以及AntdVue来构建一个高效的管理平台。......
  • js async/await 用法
    1.使用async/await可以更好地控制事件循环,像处理DOM事件或定时器等场合。eg1......
  • 鸿蒙内核源码分析 (协处理器篇) | CPU 的好帮手
    本篇很重要,对CP15协处理所有16个寄存器一一介绍,可能是全网介绍CP15最全面的一篇,鸿蒙内核的汇编部分(尤其开机启动)中会使用,熟练掌握后看汇编代码将如虎添翼。协处理器协处理器 (co-processor)顾名思义是协助主处理器完成工作,例如浮点、图像、音频处理这一类外围工作。角色相当于......
  • DC-DC双向同步35V升降压CC/CV控制器具有展频负载电流监测
    概述:PC1035是一款同步升降压控制器,适用于驱动高效电源转换器中的MOSFET或氮化镓(GaN)等功率器件。它支持高达35V的宽输入和输出电压范围,并可在降压、升降压和升压模式之间无缝转换。PC1035集成了具有UVLO保护功能的上管和下管栅极驱动器。它提供可编程电感峰值电流限制和输......
  • bacnet mstp设备数据 转IEC61850项目案例
    目录1 案例说明 12 VFBOX网关工作原理 13 使用YABE软件读取BACNETMSTP设备信息 24 配置网关采集BACNETMSTP数据 45 用IEC61850协议转发数据 66 网关使用多个逻辑设备和逻辑节点的方法 87 案例总结 91 案例说明使用Yabe软件获取bacnetmstp设备信息,如果已知bacnet设备......
  • PC电源,USB Type-C通用型双向同步升降压控制器支持5V驱动可编程输出输入电流限制
    概述:PC1045是一款同步升降压控制器,适用于驱动高效电源转换器中的MOSFET或氮化镓(GaN)等功率器件。它支持高达45V的宽输入和输出电压范围,并可在降压、升降压和升压模式之间无缝转换。PC1045集成了具有UVLO保护功能的上管和下管栅极驱动器。它提供可编程电感峰值电流限制和输......
  • 使用bert_base_chinese实现文本语义相似度计算
    本文选择将模型下载到本地,进行离线分析计算,也可以使用在线下载,但本文略过1下载bert_base_chinese下载地址:https://huggingface.co/google-bert/bert-base-chinese/tree/main下载图上红框内的四个文件,并按照下图的目录结构放置bert-base-chinese文件夹里放2代码......
  • 导入excel测试分析与测试验证点
    前言:excel导入是一个很常见的功能,基本上toB的系统在web端都能用到,能够解决大批数据快速生成,是快速创建/修改数据的绝佳方式;通常导入excel分了2种,一种是导入后新增数据,一种是导入后修改数据。笔者曾经在公司对内的销售系统,CRM,监管系统等都见过类似的功能,用于快速创建大批客户数据......