为什么Coldfusion在列表函数中删除零

时间:2015-12-17 19:18:32

标签: coldfusion delimiter coldfusion-10

我在Coldfusion 10中遇到了一个奇怪的行为 - 我有一个名为myString的变量," 12600A07xxx"。

我想要" A07"之前和之后的子串,所以我使用" A07"作为列表分隔符,键入listFirst(myString, "A07")listLast(myString, "A07")

首先,它会剥离零,然后返回" 126"何时它应该返回" 12600"。它与ListGetAt()的作用相同。为什么会这样?

3 个答案:

答案 0 :(得分:6)

我知道 - CF将“A07”视为三个不同的分隔符,“A”,“0”和“7”,而不是单个分隔符“A07”。还有几种方法可以解决这个问题,最简单的方法就是用一个字符(如管道)暂时替换“A07”并将其用作临时分隔符。

答案 1 :(得分:5)

正如您已经注意到的,ColdFusion具有许多具有单字符分隔符的功能。但是,也有支持多字符分隔符的功能,例如
listToArray( list [, delimiters[, includeEmptyFields[, multiCharacterDelimiter]]] )

示例:

parts = listToArray("12600A07xxx", "A07", false, true);
writeOutput( parts[1] ); // >> 12600
writeOutput( parts[2] ); // >> xxx

旁注:您确定要使用特定分隔符拆分输入吗?使用这种数据的正则表达式模式可能会更好。只是一个猜测。

答案 2 :(得分:0)

另一种方法可能是使用reReplaceNoCase()。像这样:

theString = "12600A07xxx";
prefix  =  reReplaceNoCase(theString , "A07.*", "");
suffix  =  reReplaceNoCase(theString , ".*A07", "");