子串函数就像PHP函数一样?

时间:2010-11-05 15:50:24

标签: coldfusion substring

有像PHPs substring这样的函数吗?我看到了Left和Mid,但这些都让我指定了我想要字符串的长度。

这是PHP的函数示例: $ rest = substr(“abcdef”,1); //返回“b”

我只是希望能够接受一个字符串并在某一点开始它,而不是结束它。

3 个答案:

答案 0 :(得分:4)

由于CF字符串是java字符串,因此可以使用java字符串函数

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

returns: 'bcdef'

或者,如果你不喜欢这样,你可以做(​​不优雅,但功能齐全):

mid(foo,2,len(foo))

答案 1 :(得分: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.

答案 2 :(得分:0)

CFLib.org是最棒的用户定义函数集合。

有一个UDF完全符合您的要求:SubStr

  

它模仿php的行为   “substr”,包围mid,left和   正确的功能成为一个单一的   功能和添加一些   额外的功能和技巧。对于   实例: - substr(“abcdef”, - 2)是   与右(“abcdef”,2)相同, -   substr(“abcdef”,1,3)与之相同   left(“abcdef”,3), - substr(“abcdef”,   2,4)与mid相同(“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 (rhodion@tiscalinet.it)
* @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>