public static string upper(string self) { StringBuilder s = new StringBuilder(self.Length); for (int i=0; i<self.Length; i++) { int ch = self[i]; if ('a' <= ch && ch <= 'z') ch &= ~0x20; s.Append((char)ch); } return s.ToString(); }