输入字符串是:
let d = cards.reduce([:]) { (d, card) -> [Int:Int] in
var d = d
let s = d[card.compartment] ?? 0
d[card.compartment] = s + 1
return d
}
输出应为:
InputStr1 = 'this-is-a-boy-5';
InputStr2 = 'this23-is-a-boy-10';
InputStr3 = 'this-41';
我想将这些字符串分成两部分,这样我就可以将第一个字符串和最后一个字符分开。我试过Output1 = ['this-is-a-boy'] [5]
Output2 = ['this23-is-a-boy'] [10]
Output3 = ['this'] [41]
,但它没有帮助。
答案 0 :(得分:5)
这应该有用(假设总有最后的数字)
data = 'this-is-a-boy-5'
toks = regexp(data, '(.*)-(\d+)$', 'tokens');
display(toks)
如果您想使用strsplit
,可以将其用作
toks = strsplit(data, '-(?=\d+$)', 'DelimiterType', 'RegularExpression');
display(toks)
答案 1 :(得分:2)
尝试拆分字符串末尾的数字前面显示的-
。
正则表达式: -(?=\d+$)
<强>解释强>
(?=\d+$)
向前看。并匹配之前的-
。你可以拆分。<强> Regex101 Demo 强>