2010-09-11 55 views
0

我有幾個需要解析的字符串。該字符串應該用胡蘿蔔字符分隔,但是,如果字符串中允許的字符數達到了最大數量,則省略胡蘿蔔字符。我需要找到解決這個問題的方法。使用分隔字符串的幫助

這裏是一個例子。

規則是在其中最多不能超過13個字符。在下面的字符串中,有一個「S」,應該有一個胡蘿蔔字符。

MASSYBU HILLSMARY 

這是一個還沒有達到13個字符的限制

CYPRUS^TOM 

我該如何處理字符串已達到13個字符的限制不存在定界符作爲一個字符串的例子第一個例子?

+0

是一個工作這些字符串在一行中還是被返回字符破壞?我不能說「MASSYBU HILLSMARY」是要變成「MASSYBU HILL ^」還是「MASSYBU HILL ^」和「SMARY」。 – 2010-09-11 03:10:27

+0

瑞安,該字符串應該是,它被分解後,MASSYBU HILLS MARY。這是城市和人的姓氏。 – John 2010-09-11 03:42:46

回答

0

首先將字符串限制爲13個字符(例如使用substr),然後查找終止符。那是你在找什麼?或者,如果您正在使用indexOf查找字符,請將結果限制爲13.它確實取決於您的代碼的外觀。

編輯:讓我把它拼出來。

$Length = Min(strlen($String), 13); 
if (($TerminatorIndex = strpos($String, "^")) !== FALSE) { 
    $Length = Min($Length, $TerminatorIndex); 
} 

return substr($String, 0, $Length); 
+0

我曾計劃使用substr,然後向後看分隔符。如果找到了,那麼以另一種方式處理。有沒有更乾淨的方式來做到這一點? – John 2010-09-11 02:35:40

+0

添加了一個示例實現。上面的正則表達式實現也很好。 – EboMike 2010-09-11 03:01:50

+0

謝謝Ebo。不幸的是,有時候我需要爲我拼寫的東西。 :)我相信這會工作得很好。 – John 2010-09-11 03:15:31

0

如果您需要削減多餘的字符,你可以做這樣的:

$n = 13; 

if(strlen($str) > $n) 
{ 
    //do some alteration example 
    $str = substr($str, 0, $n); 
} 
+0

嘿Nazariy,謝謝你的代碼片段。我遇到的問題是,字符串的長度取決於人的城市,名稱等等。我不確定這會使我得到我需要的位置。基本上,它看起來像我需要計數塊,然後尋找一個胡蘿蔔字符。如果沒有找到胡蘿蔔字符,那麼我將需要在13. – John 2010-09-11 02:40:33

1

看起來像正則表達式

$str = "whatever^abcabcabcabcxABCABCABCABCXDEF^"; 

preg_match_all('~[^^]{1,13}~', $str, $m); 
var_dump($m[0]); 

輸出

[0]=> string(8) "whatever" 
    [1]=> string(13) "abcabcabcabcx" 
    [2]=> string(13) "ABCABCABCABCX" 
    [3]=> string(3) "DEF" 
+0

切割字符串嗨stereofrog,感謝代碼片段。這看起來很有希望。我打算玩這個,看看我能不能做些事情。我會回來的。再次感謝。 – John 2010-09-11 03:10:07