DotNet的字符转义操作
来源:互联网 发布:linux开源项目 编辑:程序博客网 时间:2024/06/03 21:46
在项目中使用到字符的转义,现在提供一种字符转义和反转义的操作方法:
1.转义符操作:
/// <summary> /// 转义符操作 /// </summary> /// <param name="s"></param> /// <param name="charToEliminate"></param> /// <returns></returns> public static string EscapeChar(string s, char charToEliminate) { char escapeChar; char substituteChar; GetEscapeAndEncodingChars(charToEliminate, out escapeChar, out substituteChar); int i; for (i = 0; i < s.Length; i++) { if (s[i] == charToEliminate || s[i] == escapeChar) { break; } } if (i == s.Length) { return s; } var sb = new StringBuilder(s.Substring(0, i), s.Length + 16); for (; i < s.Length; i++) { var c = s[i]; if (c == charToEliminate) { sb.Append(escapeChar); sb.Append(substituteChar); } else if (c == escapeChar) { sb.Append(escapeChar, 2); } else { sb.Append(c); } } return sb.ToString(); }
2.反转义符操作:
/// <summary> /// 反转义符操作 /// </summary> /// <param name="s"></param> /// <param name="eliminatedChar"></param> /// <returns></returns> public static string UnescapeChar(string s, char eliminatedChar) { ArgumentValidator.ThrowIfNull(s, "s"); char escapeChar; char substituteChar; GetEscapeAndEncodingChars(eliminatedChar, out escapeChar, out substituteChar); if (-1 == s.IndexOf(escapeChar)) { return s; } var sb = new StringBuilder(s.Length); for (var i = 0; i < s.Length; i++) { var c = s[i]; var next = i + 1; if (c != escapeChar || next == s.Length) { sb.Append(c); continue; } if (s[next] == escapeChar) { sb.Append(escapeChar); i++; } else if (s[next] == substituteChar) { sb.Append(eliminatedChar); i++; } else { var msg = ("Invalid escaped string '{0}'. Position {1} has escape character, but it is not followed by " + "another escape character or by the substitute character").Fi(s, i); throw new AssertionViolationException(msg); } } return sb.ToString(); }
3.获取转义符和编码字符:
/// <summary> /// 获取转义符和编码字符 /// </summary> /// <param name="charToEliminate"></param> /// <param name="escapeChar"></param> /// <param name="encodingChar"></param> private static void GetEscapeAndEncodingChars(char charToEliminate, out char escapeChar, out char encodingChar) { var i = MEscapeChars[0] == charToEliminate ? 1 : 0; escapeChar = MEscapeChars[i]; i++; if (MEscapeChars[i] == charToEliminate) { i++; } encodingChar = MEscapeChars[i]; }
本文出自 “彭泽0902” 博客,请务必保留此出处http://pengze0902.blog.51cto.com/7693836/1862764
0 0
- DotNet的字符转义操作
- 一般转义字符操作
- 转义字符 转义字符的意义
- MySQL的转义字符“/”
- XML的转义字符
- MySQL的转义字符“/”
- java的转义字符
- jsp的转义字符
- url的转义字符
- 转义字符的解释
- 的转义字符“/”
- 的转义字符“/”
- MySQL的转义字符“/”
- MySQL的转义字符“”
- MySQL的转义字符“/”
- xml的转义字符
- Java的转义字符
- Access的转义字符
- C#运用DocX操作文档
- C#二进制流的序列化和反序列化操作
- Android WebView硬件加速渲染网页UI的过程分析
- C#枚举类型的常用操作总结
- C#运用QRCode生成二维码
- DotNet的字符转义操作
- ABC三栏布局,AC固定宽度,B自适应
- C#中Uri操作
- DotNet处理服务器路径的方法
- DotNet项目中的一些常用验证操作
- C#中DataTable转化为List<T>解析
- EFCodeFirst-Net
- 将DataTable转换成CSV文件
- Oracle常用的SQL方法总结