2013-10-29 77 views
0

我一直在嘗試將字符串拆分爲字母和數字。我發現各種解決方案,但他們不工作我的期望(他們中的一些從數字僅單獨字母(不是整數或浮點數/每說負數)如何將字符串拆分爲字母和FLOAT/INTEGER號碼

下面是一個例子:

$input = '-4D-3A'; // edit: the TEXT part can have multiple chars, i.e. -4AB-3A-5SD 
$result = preg_split('/(?<=\d)(?=[a-z])|(?<=[a-z])(?=\d)/i', $input); 
print_r($result); 

結果:

Array ([0] => -4 [1] => D-3 [2] => A) 

我需要它是[0] => -4 [1] => d [2] => -3 [3] =>甲

我已經嘗試了幾次更改,但目前爲止沒有結果,如果可能,請幫我一下嗎?

謝謝。

+0

您給出的示例$ input =' - 4D-3a'是否有任何變化? – jeff

+0

可能會有字符串匹配{Number1} {Text1} {N2} {T2} {N3} {T3} ... {Nn} {Tn} –

+0

哦,是的,文本可以有多個字符,比如-3STS-5AB,它像-3,STS,-5,AB等 –

回答

2

嘗試:

$input = '-4D-3A'; 
$result = preg_split('/(-?[0-9]+\.?[0-9]*)/i', $input, 0, PREG_SPLIT_DELIM_CAPTURE); 
$result=array_filter($result); 
print_r($result); 

它將由數字分割也可拍攝的分隔符(號碼)

給出:陣列([1] => -4 [4] => d [5 ] => -3 [8] => A)

我patterened數爲:
1.具有可選的負號(您可能需要做+太)
2.接着是一個或多個數字
3.其後是可選的小數點
4.其後是零個或多個數字

任何人都可以指出解決方案爲「-0」。有效號碼?

1

這個正則表達式怎麼樣? ([-]{,1}\d+|[a-zA-Z]+) 我測試了它在http://www.rubular.com/似乎工作,你想要的。

+0

我看到它的工作原理,但它分割所有的字符,而我需要字符串中的{文本}部分分離,直到它到達下一個數字,即-4TEST-5A它應該變成-4,TEST,-5,A 謝謝! –

+0

當然,我會修改它。如果您有更多的要求,請告訴我們,因爲我們所有的都是您提供的測試案例。 – alandarev

+0

主要是這個,謝謝。 –

相關問題