悬赏分:10 浏览:222 次
|
public static string LetterReplace(string txt) { if(txt == null)return null; return txt.Replace("<","安全字符").Replace(">","安全字符"); } 楼主,您的办法是不是效率太低了? 如果按照楼主自己现在的思路继续走下去的话,我觉得楼主应该设置一个变量用来存储要返回的值。参考如下: public static string LetterReplace(string txt) { string backTxt; foreach (char a in txt) { switch(a) { case '<': backTxt += a.ToString().Replace("<", "<"); break; case '>': backTxt += a.ToString().Replace(">", ">"); break; default: backTxt += a.ToString(); break; } } return backTxt;//返回值 } 同意楼上的回答。 public static string LetterReplace(string txt) { string backTxt; foreach (char a in txt) { switch(a) { case '<': backTxt += a.ToString().Replace("<", "<"); break; case '>': backTxt += a.ToString().Replace(">", ">"); break; default: backTxt += a.ToString(); break; } } return backTxt; } 可以用正则表达式 效率底下这样, /// <summary> /// 检测是否有Sql危险字符 /// </summary> /// <param name="str">要判断字符串</param> /// <returns>判断结果</returns> public static bool IsSafeSqlString(string str) { return !Regex.IsMatch(str, @"[-|;|,|\/|\(|\)|\[|\]|\}|\{|%|@|\*|!|\']"); } //增强清理 public static string InputText(string inputString, int maxLength) { StringBuilder retVal = new StringBuilder(); // 检查是否为空 if ((inputString != null) && (inputString != String.Empty)) { inputString = inputString.Trim(); //检查长度 if (inputString.Length > maxLength) inputString = inputString.Substring(0, maxLength); //替换危险字符 for (int i = 0; i < inputString.Length; i++) { switch (inputString[i]) { case '"': retVal.Append("""); break; case '<': retVal.Append("<"); break; case '>': retVal.Append(">"); break; default: retVal.Append(inputString[i]); break; } } retVal.Replace("'", " ");// 替换单引号 } return retVal.ToString(); } |
|
2个月前 林间曦阳 : 可以试试用正则表达式来解决...... |