1 // 2 // System.Web.Util.StrUtils 3 // 4 // Author(s): 5 // Gonzalo Paniagua Javier (gonzalo@ximian.com) 6 // 7 // (C) 2005 Novell, Inc, (http://www.novell.com) 8 // 9 10 // 11 // Permission is hereby granted, free of charge, to any person obtaining 12 // a copy of this software and associated documentation files (the 13 // "Software"), to deal in the Software without restriction, including 14 // without limitation the rights to use, copy, modify, merge, publish, 15 // distribute, sublicense, and/or sell copies of the Software, and to 16 // permit persons to whom the Software is furnished to do so, subject to 17 // the following conditions: 18 // 19 // The above copyright notice and this permission notice shall be 20 // included in all copies or substantial portions of the Software. 21 // 22 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 23 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 24 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 25 // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE 26 // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION 27 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 28 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 29 // 30 31 using System; 32 using System.Globalization; 33 using System.Text; 34 35 namespace System.Web.Util { 36 internal sealed class StrUtils 37 { StrUtils()38 StrUtils () { } 39 StartsWith(string str1, string str2)40 public static bool StartsWith (string str1, string str2) 41 { 42 return StartsWith (str1, str2, false); 43 } 44 StartsWith(string str1, string str2, bool ignore_case)45 public static bool StartsWith (string str1, string str2, bool ignore_case) 46 { 47 int l2 = str2.Length; 48 if (l2 == 0) 49 return true; 50 51 int l1 = str1.Length; 52 if (l2 > l1) 53 return false; 54 55 return (0 == String.Compare (str1, 0, str2, 0, l2, ignore_case, Helpers.InvariantCulture)); 56 } 57 EndsWith(string str1, string str2)58 public static bool EndsWith (string str1, string str2) 59 { 60 return EndsWith (str1, str2, false); 61 } 62 EndsWith(string str1, string str2, bool ignore_case)63 public static bool EndsWith (string str1, string str2, bool ignore_case) 64 { 65 int l2 = str2.Length; 66 if (l2 == 0) 67 return true; 68 69 int l1 = str1.Length; 70 if (l2 > l1) 71 return false; 72 73 return (0 == String.Compare (str1, l1 - l2, str2, 0, l2, ignore_case, Helpers.InvariantCulture)); 74 } 75 EscapeQuotesAndBackslashes(string attributeValue)76 public static string EscapeQuotesAndBackslashes (string attributeValue) 77 { 78 StringBuilder sb = null; 79 for (int i = 0; i < attributeValue.Length; i++) { 80 char ch = attributeValue [i]; 81 if (ch == '\'' || ch == '"' || ch == '\\') { 82 if (sb == null) { 83 sb = new StringBuilder (); 84 sb.Append (attributeValue.Substring (0, i)); 85 } 86 sb.Append ('\\'); 87 sb.Append (ch); 88 } 89 else { 90 if (sb != null) 91 sb.Append (ch); 92 } 93 } 94 if (sb != null) 95 return sb.ToString (); 96 return attributeValue; 97 } 98 IsNullOrEmpty(string value)99 public static bool IsNullOrEmpty (string value) 100 { 101 return String.IsNullOrEmpty (value); 102 } 103 SplitRemoveEmptyEntries(string value, char [] separator)104 public static string [] SplitRemoveEmptyEntries (string value, char [] separator) 105 { 106 return value.Split (separator, StringSplitOptions.RemoveEmptyEntries); 107 } 108 } 109 } 110 111