我有一个像1 M 24 Cm
这样的字符串,我只想将其转换为厘米。
因此,我希望拥有1 M 24 Cm
而不是124 cm
解决此问题的最佳方法是什么?
答案 0 :(得分:2)
捕获代表仪表的前几个数字,并用捕获的组替换Cm
个数字的开头,向前寻找(\d+) M (?=\d+ Cm)
个数字和字符:
$1
替换为$orig = '1 M 24 Cm';
$replaced = preg_replace(
'/(\d+) M (?=\d+ Cm)/',
'$1',
$orig
);
echo $replaced;
M
或者您可能会在后面寻找一个数字,并用空字符串替换$replaced = preg_replace(
'/(?<=\d) M (?=\d+ Cm)/',
'',
$orig
);
override func awakeFromNib()
{
super.awakeFromNib()
let touchTest = UITapGestureRecognizer(target: self, action: #selector(self.testTap(sender:)))
testingLabel.isUserInteractionEnabled = true
testingLabel.addGestureRecognizer(touchTest)
}
答案 1 :(得分:1)
另一种方法可能是声明字符串^
的开头,匹配一个或多个数字\d+
并重置报告的匹配项\K
的起点。
然后匹配M
,后跟一个正向前行(?=
,断言其后是一个或多个数字,后跟Cm
,并断言字符串的结尾。将匹配项替换为空字符串,然后使用strtolower。
$re = '/^\d+\K M (?=\d+ Cm$)/';
$str = '1 M 24 Cm';
$subst = '';
$result = strtolower(preg_replace($re, $subst, $str, 1));
echo $result; // 124 cm