Функция подстроки, которая похожа на функцию PHP? - PullRequest
0 голосов
/ 05 ноября 2010

есть ли такая функция, как PHP-подстрока? Я видел Left и Mid, но все они заставляют меня указать длину того, что я хочу, чтобы строка была.

Вот пример функции PHP: $ rest = substr ("abcdef", 1); // возвращает "b"

Я просто хочу иметь возможность взять строку и начать ее с определенной точки, а не заканчивать ее также.

Ответы [ 3 ]

4 голосов
/ 05 ноября 2010

Поскольку строки CF - это строки Java, вы можете использовать функции строк Java

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

returns: 'bcdef'

Или, если вам это не нравится, вы можете сделать (не элегантно, но функционально):

mid(foo,2,len(foo))
1 голос
/ 05 ноября 2010

С подстрока в холодном сплаве :

Попробуйте

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 голосов
/ 05 ноября 2010

CFLib.org - потрясающая коллекция пользовательских функций.

Существует UDF, который делает именно то, что вы хотите: SubStr

Он имитирует поведение php "substr", объединяя среднюю, левую и правую функциональность в одну функцию и добавляя некоторую дополнительную функциональность и хитрость.Например: - substr ("abcdef", -2) - то же, что right ("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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...