Что самый короткий путь состоит в том, чтобы сделать это в Python?
string = " xyz"
должен возвратить индекс = 3
Похоже, бригада «регулярные выражения могут делать все» взяла выходной, поэтому я заполню:
>>> tests = [u'foo', u' foo', u'\xA0foo']
>>> import re
>>> for test in tests:
... print len(re.match(r"\s*", test, re.UNICODE).group(0))
...
0
1
1
>>>
FWIW: затраченное время - O (the_answer), а не O (len (input_string))
>>> next(i for i, j in enumerate(' xyz') if j.strip())
3
или
>>> next(i for i, j in enumerate(' xyz') if j not in string.whitespace)
3
в версиях Python <2.5 вам нужно будет сделать:
(...).next()
import re
def prefix_length(s):
m = re.match('(\s+)', s)
if m:
return len(m.group(0))
return 0
>>> string = " xyz"
>>> next(idx for idx, chr in enumerate(string) if not chr.isspace())
3
>>> string = " xyz"
>>> map(str.isspace,string).index(False)
3