簡體   English   中英

如何用digit [space]替換每個數字?

[英]How can I replace each digit with digit[space]?

我有帶混合字符和數字的字符串,如何搜索數字並將其替換為新格式?

輸入:

abc def 123 456

預期輸出:

abc def 1 2 3  4 5 6

我努力了:

preg_replace('/\D/', '', $c)

但這不是動態的。

編輯:

我忘了補充,如果數字前面有$則不應替換數字。

這應該為您工作:

因此,您要替換數字,意味着使用\\d[0-9] )而不是\\D (這是其他所有內容)。 然后,您需要將每個數字替換為: X > X 將其匯總為:

$c = preg_replace("/(\d)(?!$)/", "$1 ", $c);

我只是意識到我需要跳過以$($ 1234)開頭的任何數字。 我應該在正則表達式中使用什么調整?

$c = preg_replace('~\$\d+(*SKIP)(*F)|(\d)(?!$)~', "$1 ", $c);

演示

一種原始但實用的方法是:

<?php

$input = 'abc def 123 456';
$mapping = [
    '1' => '1 ',
    '2' => '2 ',
    '3' => '3 ',
    '4' => '4 ',
    '5' => '5 ',
    '6' => '6 ',
    '7' => '7 ',
    '8' => '8 ',
    '9' => '9 ',
    '0' => '0 ',
];
foreach ($mapping as $before => $after) {
    $input = str_replace($before, $after, $input);
}

echo $input;

同樣,如果您選擇這樣做,則可以以編程方式生成映射。

使用preg_replace

$str = "abc def 123 456";
$result = preg_replace('/(\d)/', ' \1 ', $str);
echo $result;
> "abc def  1  2  3   4  5  6 "

刪除最后一個空格使用substr

echo substr($result,0,-1);
> "abc def  1  2  3   4  5  6"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM