我被要求比较两个不同的字符串并返回不匹配。如果一个字符串比另一个字符串长,请输出额外的字符。
$('#btnclick').click(function() {
$('#testdiv').slideToggle( "slow" );
});
这是我所做的,我无法弄清楚额外的部分。
答案 0 :(得分:1)
我在这里使用itertools.izip_longest,类似于:
for idx, (a, b) in enumerate(izip_longest(s1, s2)):
if a and b:
if a != b:
print 'Mismatch at {0}: {1} != {2}'.format(idx, a, b)
else:
suffix = (s1 if a else s2)[idx:]
print 'Extra string: {0}'.format(suffix)
break
另请注意,index()
返回项的第一个入口,因此如果字符在字符串中重复,则可能返回错误的结果。 enumerate是要走的路。将字符串转换为列表也是多余的,字符串已经可以迭代。
答案 1 :(得分:0)
比较他们的长度:
if len(a)>len(b):
print("a is longer than b by %s" % str(len(a)-len(b)))
print("Extra part is %s" % a[len(b):])
elif len(a)<len(b):
print("a is shorter than b by %s" % str(len(b)-len(a)))
print("Extra part is %s" % b[len(a):])
答案 2 :(得分:0)
>>> a = "xyz"
>>> b = "abcdef"
>>> a[len(b):] or b[len(a):]
'def'
另外,正如@bereal指出的那样,characters1.index(a)
不会像你期望的那样工作。您可以考虑使用enumerate
:
for i, (a, b) in enumerate(zip(characters1, characters2)):
if a != b:
print('Mismatch at character', i, ':', a, '!=', b)
print('Extra string:', characters1[i+1:] or characters2[i+1:])
答案 3 :(得分:0)
这样的事情:
if len(characters1) > len(characters2):
print('Extra characters1: ', characters1[len(characters2):])
elif len(characters2) > len(characters1):
print('Extra characters2: ', characters2[len(characters1):])
答案 4 :(得分:0)
这显示了如何比较两个list
,并将正确比较两个相同长度的不同字符串:
a = ['abc', 'def', 'ghi']
b = ['abc', 'ddf', 'ghij']
for x,y in zip(a, b):
if x!=y:
print(x, y, x[len(y):] if len(x)>len(y) else y[len(x):])
打印:
def ddf
ghi ghij j