擅长:python、mysql、java
<p>您可以检查一次字符串,然后查找每个操作,如果匹配,只需拉动拼接的字符串:</p>
<pre><code>operators = {'+', '-', '/', 'x'}
s = "Cheese-Bacon"
out = next(([s[:i], ch, s[i+1:]] for i, ch in enumerate(s) if ch in operators), None)
if out:
# do whatever
</code></pre>
<p>如果要获取多个运算符:</p>
<pre><code>def split_keep_sep(s, ops):
inds = ((i, ch) for i, ch in enumerate(s) if ch in ops)
prev = 0
for i, ch in inds:
yield s[prev:i]
yield ch
prev = i + 1
yield s[i+1:]
</code></pre>
<p>演示:</p>
<pre><code>In [26]: operators = {'+', '-', '/', 'x'}
In [27]: s = "cheese+bacon-patty/lettuce?"
In [28]: print(list(split_keep_sep(s, operators)))
['cheese', '+', 'bacon', '-', 'patty', '/', 'lettuce?']
</code></pre>