using Apewer; using System; using System.Collections.Generic; using System.Text; namespace Apewer.Internals { internal class TextVerifier { /// 验证符串在父字符串中出现的次数。 /// 父字符串。 /// 子字符串。 /// 是否忽略大小写。 public static int Exists(string argParent, string argSub, bool argIgnoreCase = false) { if (string.IsNullOrEmpty(argParent) || string.IsNullOrEmpty(argSub)) return 0; string vp = argParent; string vs = argSub; int vr = 0; int vl; int vi; try { if (argIgnoreCase) { vp = TextHelper.LCase(vp); vs = TextHelper.LCase(vs); } vl = vs.Length; vi = 1; while (vi <= (vp.Length - vl + 1)) { if (TextHelper.Mid(vp, vi, vl) == vs) { vr += 1; vi += vl; } else vi += 1; } return vr; } catch { return 0; } } /// 验证字符或字符串是否全部存在于字符池,默认选项等效于判断 (exists > 0) 是否为 True。 /// 字符池,允许出现的字符组合。 /// 要查找的字符或字符串。 /// 若 _sub 不存在于 _parent,则返回 False。 public static bool Include(string argPool, string argSub) { return Include(argPool, argSub, false, false); } /// 验证字符或字符串是否全部存在于字符池,默认选项等效于判断 (exists > 0) 是否为 True。 /// 字符池,允许出现的字符组合。 /// 要查找的字符或字符串。 /// 分别验证 _sub 里的每个字符,若为 False 则验证 _sub 整体。 /// 若 _sub 或 _sub 中任何一个字符不存在于 _parent,则返回 False。 public static bool Include(string argPool, string argSub, bool argAlone) { return Include(argPool, argSub, argAlone, false); } /// 验证字符或字符串是否全部存在于字符池,默认选项等效于判断 (exists > 0) 是否为 True。 /// 字符池,允许出现的字符组合。 /// 要查找的字符或字符串。 /// 分别验证 _sub 里的每个字符,若为 False 则验证 _sub 整体。 /// 是否忽略大小写。 /// 若 _sub 或 _sub 中任何一个字符不存在于 _parent,则返回 False。 public static bool Include(string argPool, string argSub, bool argAlone = false, bool argIgnoreCase = false) { //{ // bool vnp = string.IsNullOrEmpty(argpool); // bool vns = string.IsNullOrEmpty(argsub); // if (vnp && vns) return true; // if ((!vnp) && vns) return true; // if (vnp && (!vns)) return false; //} ////try //{ // string vp = argpool; // string vs = argsub; // if (argignorecase) { vp = vp.ToLower(); vs = vs.ToLower(); } // if (argalone) // { // string vc; // int vl = 0; // for (int vi = 1; vi <= vs.Length; vi++) // { // vc = Mid(vs, vi, 1); // int vinstr = InStr(vp, vc); // if (InStr(vp, vc) > 0) vl += 1; // } // if (vl == vs.Length) return true; // } // else // { // if (InStr(vp, vs) > 0) return true; // } // return false; //} ////catch ////{ //// return false; ////} bool vnp = string.IsNullOrEmpty(argPool); bool vns = string.IsNullOrEmpty(argSub); if (vnp && vns) return true; if ((!vnp) && vns) return true; if (vnp && (!vns)) return false; //try { string vp = string.IsNullOrEmpty(argPool) ? "" : argPool; string vs = string.IsNullOrEmpty(argSub) ? "" : argSub; if (argIgnoreCase) { vp = vp.ToLower(); vs = vs.ToLower(); } if (argAlone) { var vcount = 0; for (int vi = 0; vi < vs.Length; vi++) { if (vp.Contains(vs[vi].ToString())) vcount += 1; else break; } return vcount == vs.Length; } else { return argPool.Contains(argSub); } } //catch //{ // return false; //} } /// 验证字符串内容是否为 IP v4 地址,格式为“0.0.0.0”。 public static bool IsIP(string argIp) { if (string.IsNullOrEmpty(argIp)) return false; try { string[] va; va = TextUtility.Split(argIp, '.'); if (va.Length != 4) return false; for (int i = 0; i <= 3; i++) { if (!IsInteger(va[i])) return false; int vint = System.Convert.ToInt32(va[i]); if (vint < 0) return false; if (vint > 255) return false; } return true; } catch { return false; } } ///验证字符串内容是否为数字,包含整数和小数。 public static bool IsNumber(string argText) { if (IsInteger(argText)) return true; if (IsDecimal(argText)) return true; return false; } /// 验证字符串内容是否为整数。 public static bool IsInteger(string argText) { //try { if (string.IsNullOrEmpty(argText)) return false; string vtext = argText.Trim(); if (string.IsNullOrEmpty(vtext)) return false; if (vtext.StartsWith("-")) vtext = TextHelper.Mid(vtext, 2, TextHelper.Len(vtext) - 1); return Include(Constant.NumberCollection, vtext, true); } // catch { return false; } } /// 验证字符串内容是否为小数,格式:0.0。 public static bool IsDecimal(string argText) { // try { string vtext = argText.Trim(); if (string.IsNullOrEmpty(vtext)) return false; string[] va; va = TextUtility.Split(vtext, '.'); if (va.Length == 2) { for (int vi = 0; vi <= 1; vi++) if (!IsInteger(va[vi])) return false; return true; } return false; } // catch { return false; } } /// 验证字符串内所有字符是否均为十六进制字符。 public static bool IsHex(string argText) { return Include(Constant.HexCollection, argText, true, true); } /// 验证字符串内所有字符是否均为字母。 public static bool IsLetter(string argText) { if (string.IsNullOrEmpty(argText)) return false; return Include(Constant.LetterCollection, argText, true, false); } /// 验证字符串内所有字符是否均为大写字母。 public static bool IsUpper(string argText) { if (string.IsNullOrEmpty(argText)) return false; return Include(Constant.UpperCollection, argText, true, true); } /// 验证字符串内所有字符是否均为小写字母。 public static bool IsLower(string argText) { if (string.IsNullOrEmpty(argText)) return false; return Include(Constant.LowerCollection, argText, true, true); } /// 验证字符串内所有字符是否均为易识别字符。 public static bool IsLucid(string argText) { if (string.IsNullOrEmpty(argText)) return false; return Include(Constant.LucidCollection, argText, true, true); } } }