我在Coldfusion 10中遇到了一个奇怪的行为 - 我有一个名为myString
的变量," 12600A07xxx"。
我想要" A07"之前和之后的子串,所以我使用" A07"作为列表分隔符,键入listFirst(myString, "A07")
和listLast(myString, "A07")
。
首先,它会剥离零,然后返回" 126"何时它应该返回" 12600"。它与ListGetAt()
的作用相同。为什么会这样?
答案 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", "");