2010-11-05 36 views
0

是否有像PHPs substring這樣的函數?我看到了Left和Mid,但是這些都讓我指定了我想要的字符串的長度。像PHP函數那樣的子字符串函數?

這裏是PHP的功能例如: $休息= SUBSTR( 「ABCDEF」,1); //返回「B」

我只是希望能夠獲得一個字符串,並在某一點開始它,而不是結束它。

+0

豈不SUBSTR( 「ABCDEF」,1);返回「bcdef」? – mbeckish 2010-11-05 16:00:11

+0

我不知道PHP,但根據文檔我擡頭一看,SUBSTR(「ABCDEF」,1);返回'bcdef':http://php.net/manual/en/function.substr.php所以,它的行爲就像CF的Mid()。可能是錯的,tho – 2010-11-05 16:02:07

+0

@愛德華姆史密斯 - 不完全一樣。 Mid有計數參數。使用PHP的substr,你不需要告訴它需要抓取多少個字符。 – mbeckish 2010-11-05 16:04:52

回答

4

由於CF字符串Java字符串,你可以使用java字符串處理函數

<cfset foo="abcdef"> 
<cfoutput>#foo.substring(1)#</cfoutput> 

returns: 'bcdef' 

或者,我F你不喜歡,你可以做(​​不優雅,但功能):

mid(foo,2,len(foo)) 
+0

我不明白使用後者的例子有什麼問題。如果你使用java substring(),一定要理解它與CF的MID函數(基於0的索引,包括/獨佔索引等等)之間的差異。 – Leigh 2010-11-05 16:32:17

+0

謝謝愛德華!那就是我需要的。 – Darren 2010-11-05 16:55:22

1

substring in coldfusion

嘗試

Left(string, length) //returns number of characters defined by length 

Mid(string, start, count) //returns the set of characters from string, beginning at start, of length count. 
+0

請閱讀問題。你必須在這些中指定一個長度,這很吸引人,而且在ColdFusion中應該有一個你不需要的函數。 – Darren 2010-11-05 16:05:55

+0

我想改變許多語言/框架的許多方面,但有時你必須與你有什麼。只是試圖幫助,男人... – 2010-11-05 16:43:35

0

CFLib.org是用戶定義函數的awesomest集合。

有一個UDF那不正是你想要什麼:SubStr

它模仿PHP 「SUBSTR」的行爲,內附中旬,左, 右功能集成到一個單一的 功能和增加了一些 額外的功能和技巧。對於 實例: - substr(「abcdef」,-2)是 與右相同(「abcdef」,2), - substr(「abcdef」,1,3)與 相同(「abcdef」 ,3), - SUBSTR( 「ABCDEF」, 2,4)是相同的中間( 「ABCDEF」,2, 4)同時,其允許東西 像 - SUBSTR( 「ABCDEF」,2)而不是 mid(「abcdef」,2,len(「abcdef」) - 2) - substr(「abcdef」,-2,1)說「開始 字符串結束前2個字符, 1個字符「。 - SUBSTR(「ABCDEF」, -4,-1)說「字符串的結尾開始前4個字符,並扔掉 的最後一個字符。」它返回不一致 指標的情況下,一個空字符串 。

這裏的源:

<cfscript> 
/** 
* Returns the substring of a string. It mimics the behaviour of the homonymous php function so it permits negative indexes too. 
* 
* @param buf  The string to parse. (Required) 
* @param start  The start position index. If negative, counts from the right side. (Required) 
* @param length  Number of characters to return. If not passed, returns from start to end (if positive start value). (Optional) 
* @return Returns a string. 
* @author Rudi Roselli Pettazzi ([email protected]) 
* @version 2, July 2, 2002 
*/ 
function SubStr(buf, start) { 
// third argument (optional) 
var length = 0; 
var sz = 0; 

sz = len(buf); 

if (arrayLen(arguments) EQ 2) { 

     if (start GT 0) { 
     length = sz; 
     } else if (start LT 0) { 
     length = sz + start; 
     start = 1; 
     } 

} else { 

     length = Arguments[3]; 
     if (start GT 0) { 
     if (length LT 0) length = 1+sz+length-start; 
     } else if (start LT 0) { 
     if (length LT 0) length = length-start; 
     start = 1+sz+start; 

     } 
} 

if (isNumeric(start) AND isNumeric(length) AND start GT 0 AND length GT 0) return mid(buf, start, length); 
else return ""; 
} 
</cfscript>