场景
Winform/CSharp中实现对Http接口地址、IP地址字符串格式/合法性校验:
https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/129616161
在上面的基础上对某http接口地址(ip加端口号,示例http://127.0.0.1:9092)
进行校验是否包含中文以及解析该地址获取ip和端口号
博客:
https://blog.csdn.net/badao_liumang_qizhi
实现
1、字符串中是否包含中文校验
GB2312码,是中华人民共和国国家汉字信息交换用编码,全称《信息交换用汉字编码字符集——基本集》,
由国家标准总局发布,1981年5月1日实施,通行于大陆。新加坡等地也使用此编码。
GB2312收录简化汉字及符号、字母、日文假名等共7445个图形字符,其中汉字占6763个。
GB2312规定“对任意一个图形字符都采用两个字节表示,每个字节均采用七位编码表示”,
习惯上称第一个字节为“高字节”,第二个字节为“低字节”。
GB2312 将代码表分为94个区,对应第一字节;每个区94个位,对应第二字节,
两个字节的值分别为区号值和位号值加32(2OH),因此也称为区位码。
01-09 区为符号、数字区,16-87区为汉字区,10-15区、88-94区是有待进一步标准化的空白区。
GB2312将收录的汉字分成两级:第一级是常用汉字计3755个,置于16-55区,按汉语拼音字母/笔形顺序排列;
第二级汉字是次常用汉字计3008个,置于56-87区,按部首/笔画顺序排列。
故而 GB2312最多能表示6763个汉字。GB2312的编码范围为2121H-777EH,与ASCII有重叠,
通行方法是将GB码两个字节的最高位置1以示区别。
代码实现
/// <summary> /// 判断句子中是否含有中文 /// </summary> /// <param >字符串</param> public bool WordsIScn(string words) { string TmmP; for (int i = 0; i < words.Length; i++) { TmmP = words.Substring(i, 1); byte[] sarr = Encoding.GetEncoding("gb2312").GetBytes(TmmP); if (sarr.Length == 2) { return true; } } return false; }
2、解析如上示例的http接口地址的前缀获取ip和端口号
声明默认值为127.0.0.1和80端口
然后判断是否包含https,分别进行不同长度的截取后面的ip:端口号的内容
其次判断是否包含冒号,不包含则是80端口
包含则按照冒号进行split
这里不允许端口后面继续跟其他内容,否则split和转换为int出异常后直接返回false,代表校验不通过
然后将解析结果赋值给两个全局变量Global.Instance.apiIpString,Global.Instance.apiPort
代码实现
/// <summary> /// 解析htpp接口字符串获取ip和端口号 /// </summary> /// <param name="httpStr"></param> public static bool analysisIpPort(string httpStr) { string subString = string.Empty; string ipStr = "127.0.0.1"; int port = 80; try { if (httpStr.Contains("https")) { subString = httpStr.Substring(8); } else { subString = httpStr.Substring(7); } //包含冒号则说明带端口号 if (subString.Contains(":")) { string[] result = subString.Split(':'); ipStr = result[0]; port = int.Parse(result[1]); }//否则使用默认80端口 else { ipStr = subString; } Global.Instance.apiIpString = ipStr; Global.Instance.apiPort = port; return true; } catch (Exception exception) { return false; } }标签:http,字节,C#,ip,GB2312,subString,端口号,string From: https://www.cnblogs.com/badaoliumangqizhi/p/17727744.html