我正在寻找一种从字符串中提取第一个数字的方法。这个例子
df<-data.frame(id=1:10, note=LETTERS[1:10], stringsAsFactors = F)
for (i in 1:5){
x=sample(1:10,1)
#print(x)
print(df[match(x,df$id),2])
}
应该返回
43
432Phill 21
432hill 21
43#1 Example
43,123 example
我假设可以使用 43
432
432
43
43,123
并从a-z,A-Z和#迭代针。得到所有位置,而不是使用最低的非零值来确定数字结束的点。这似乎有点矫枉过正。有没有更好的方法呢?
编辑:位置是稍后使用substr。如果有一种更好的方式,我会失望。
答案 0 :(得分:3)
使用正则表达式,您可以从字符串中提取数字。
以下陈述应该起到作用:
preg_match_all('~\d+~', $string, $match);
$match
是$string
中包含的数字数组。
答案 1 :(得分:1)
如果数字从头开始,你可以这样做:
$number = floatval($string); //it will return float e.g. 432
如果您使用逗号而不是小数点,例如43,123你必须先用点代替它:
$string = str_replace(',', '.', '43,123 example');