如何从带有其他逗号的字符串中的数值中删除逗号?
How to remove commas from numeric values in a string with other commas?
我正在使用一个包含账户报表的数组。我希望能够从数值中删除逗号,以便能够在不丢失重要值的情况下用逗号展开。
例如,我的数组包含如下索引:
26 => 20/08/2099,"ATM CASH WITHDRAWAL (ON-US) ATM CASH WITHDRAWAL (ON-US) EMPEMOM, LAGA ATM 2 LOGO NG 000360585490","",20/08/2018,"5,000","","1,316.01"
27 => 27/08/2027,BANK CHARGE 26 SMS CHARGE AND VAT FOR 27TH JUL - 23RD AUG 2018,2803064 028,27/08/2018,109.2,"","1,206.81"
我想在不删除每个字符串之间的逗号的情况下删除“5,000”和其他货币值中的逗号,以便输出如下所示:
26 => 20/08/2099,"ATM CASH WITHDRAWAL (ON-US) ATM CASH WITHDRAWAL (ON-US) EMPEMOM, LAGA ATM 2 LOGO NG 000360585490","",20/08/2018,"5000","","1316.01"
27 => 27/08/2027,BANK CHARGE 26 SMS CHARGE AND VAT FOR 27TH JUL - 23RD AUG 2018,2803064 028,27/08/2018,109.2,"","1206.81"
你可以使用 foreach 你的数组并用逗号展开然后替换“,”每个数组然后检查它是否是数字
foreach 数组然后用逗号分解字符串
$stringArray=explode(",",$str)
然后替换“,”每个 $stringArray
$CheckNumber= str_replace(',', '', $string);
并通过以下方式检查它是否为数字:
if (is_numeric($CheckNumber))
$stringArray[i]=$CheckNumber;
最后加入数组
join(",",$stringArray);
您也可以使用 array_map with preg_replace_callback 作为模式,您可以使用:
"\d{1,3}(?:,\d{3})+\.\d{2}"
"\d{1,3}
匹配 "
后跟 1-3 位数字
(?:,\d{3})!
重复 1+ 次匹配一个逗号和 3 个数字
\.\d{2}"
匹配一个点和 2 个数字后跟 "
在 preg_replace_callback
的回调中,将逗号替换为空字符串并 return 匹配。
例如:
$atm = array(
'26' => '20/08/2099,"ATM CASH WITHDRAWAL (ON-US) ATM CASH WITHDRAWAL (ON-US) EMPEMOM, LAGA ATM 2 LOGO NG 000360585490","",20/08/2018,"5,000","","1,316.01"',
'27' => '27/08/2027,BANK CHARGE 26 SMS CHARGE AND VAT FOR 27TH JUL - 23RD AUG 2018,2803064 028,27/08/2018,109.2,"","1,206.81"'
);
$atm = array_map(function($x) {
return preg_replace_callback('/"\d{1,3}(?:,\d{3})+\.\d{2}"/', function($m) {
return str_replace(',', '', $m[0]);
}, $x);
}, $atm);
print_r($atm);
结果:
Array
(
[26] => 20/08/2099,"ATM CASH WITHDRAWAL (ON-US) ATM CASH WITHDRAWAL (ON-US) EMPEMOM, LAGA ATM 2 LOGO NG 000360585490","",20/08/2018,"5,000","","1316.01"
[27] => 27/08/2027,BANK CHARGE 26 SMS CHARGE AND VAT FOR 27TH JUL - 23RD AUG 2018,2803064 028,27/08/2018,109.2,"","1206.81"
)
我正在使用一个包含账户报表的数组。我希望能够从数值中删除逗号,以便能够在不丢失重要值的情况下用逗号展开。
例如,我的数组包含如下索引:
26 => 20/08/2099,"ATM CASH WITHDRAWAL (ON-US) ATM CASH WITHDRAWAL (ON-US) EMPEMOM, LAGA ATM 2 LOGO NG 000360585490","",20/08/2018,"5,000","","1,316.01"
27 => 27/08/2027,BANK CHARGE 26 SMS CHARGE AND VAT FOR 27TH JUL - 23RD AUG 2018,2803064 028,27/08/2018,109.2,"","1,206.81"
我想在不删除每个字符串之间的逗号的情况下删除“5,000”和其他货币值中的逗号,以便输出如下所示:
26 => 20/08/2099,"ATM CASH WITHDRAWAL (ON-US) ATM CASH WITHDRAWAL (ON-US) EMPEMOM, LAGA ATM 2 LOGO NG 000360585490","",20/08/2018,"5000","","1316.01"
27 => 27/08/2027,BANK CHARGE 26 SMS CHARGE AND VAT FOR 27TH JUL - 23RD AUG 2018,2803064 028,27/08/2018,109.2,"","1206.81"
你可以使用 foreach 你的数组并用逗号展开然后替换“,”每个数组然后检查它是否是数字
foreach 数组然后用逗号分解字符串
$stringArray=explode(",",$str)
然后替换“,”每个 $stringArray
$CheckNumber= str_replace(',', '', $string);
并通过以下方式检查它是否为数字:
if (is_numeric($CheckNumber))
$stringArray[i]=$CheckNumber;
最后加入数组
join(",",$stringArray);
您也可以使用 array_map with preg_replace_callback 作为模式,您可以使用:
"\d{1,3}(?:,\d{3})+\.\d{2}"
"\d{1,3}
匹配"
后跟 1-3 位数字(?:,\d{3})!
重复 1+ 次匹配一个逗号和 3 个数字\.\d{2}"
匹配一个点和 2 个数字后跟"
在 preg_replace_callback
的回调中,将逗号替换为空字符串并 return 匹配。
例如:
$atm = array(
'26' => '20/08/2099,"ATM CASH WITHDRAWAL (ON-US) ATM CASH WITHDRAWAL (ON-US) EMPEMOM, LAGA ATM 2 LOGO NG 000360585490","",20/08/2018,"5,000","","1,316.01"',
'27' => '27/08/2027,BANK CHARGE 26 SMS CHARGE AND VAT FOR 27TH JUL - 23RD AUG 2018,2803064 028,27/08/2018,109.2,"","1,206.81"'
);
$atm = array_map(function($x) {
return preg_replace_callback('/"\d{1,3}(?:,\d{3})+\.\d{2}"/', function($m) {
return str_replace(',', '', $m[0]);
}, $x);
}, $atm);
print_r($atm);
结果:
Array
(
[26] => 20/08/2099,"ATM CASH WITHDRAWAL (ON-US) ATM CASH WITHDRAWAL (ON-US) EMPEMOM, LAGA ATM 2 LOGO NG 000360585490","",20/08/2018,"5,000","","1316.01"
[27] => 27/08/2027,BANK CHARGE 26 SMS CHARGE AND VAT FOR 27TH JUL - 23RD AUG 2018,2803064 028,27/08/2018,109.2,"","1206.81"
)