直接继承字符串类
'''
检测字符是否合法
'''
class String(str):
illegal = {'and': 1, 'elif': 1, 'import': 1, 'return': 1,'as': 1, 'else': 1, 'in': 1, 'try': 1,'assert': 1,
'except': 1, 'is': 1, 'while': 1,'break': 1, 'finally': 1, 'lambda': 1, 'with': 1, 'class': 1,
'for': 1, 'not': 1, 'yield': 1,'continue': 1, 'from': 1, 'or': 1,'def': 1, 'global': 1, ' pass': 1,
'del': 1, 'if': 1, 'raise': 1}
legal={'0':1,'1':1,'2':1,'3':1,'4':1,'5':1,'6':1,'7':1,'8':1,'9':1,'_':1,'z':1,'x':1,'c':1,'v':1,'b':1,'n':1,
'm':1,'a':1,'s':1,'d':1,'f':1,'g':1,'h':1,'j':1,'k':1,'l':1,'q':1,'w':1,'e':1,'r':1,'t':1,'y':1,'u':1,
'i':1,'o':1,'p':1,'Z':1,'X':1,'C':1,'V':1,'B':1,'N':1,'M':1,'L':1,'K':1,'J':1,'H':1,'G':1,'F':1,'D':1,
'S':1,'A':1,'Q':1,'W':1,'E':1,'R':1,'T':1,'Y':1,'U':1,'I':1,'O':1,'P':1}
def __init__(self,string):
str.__init__(self)
self.__islegal=None
def isIllegal(self):
if not self.__islegal==None:
return self.__islegal
s=self.strip()
self.__islegal = False
if (s==None) or s=='':
return self.__islegal
if not (s[0].isalpha() or s[0]=='_'):
return self.__islegal
if String.illegal.get(self):
return self.__islegal
for i in s:
if not String.legal.get(i):
return self.__islegal
self.__islegal=True
return self.__islegal
这里直接使用字典,因为字典内部使用哈希表结构,速度很快,还有一点python在创建字符串时就已经计算好了其哈希值,所以后面使用字符串做为字典的键,访问很快。