在特定字符之前,之后和之间提取文本

时间:2012-10-31 15:13:39

标签: coldfusion coldfusion-9

在我的数据库中,某些关键字被“/”和“\”字符包围。

在应用程序端,在ColdFusion中,我试图提取和分离出现在“/”和“\”

包围的文本字符串之前或之后的文本

所以说我有一句话:我的胡扯有一个名字,它是/ HOMER \

  1. 我想将两者分开,所以我有一个变量,其中包含字符串我的baloney有一个名字,它是
  2. 另一个 HOMER 且没有“/”和“\”的变量
  3. 同样,“/”和“\”可以出现在一串文本之前或之后,如下所示:

    /Ash\ Gotta catch’em all
    

    /Nike\ Just do it.
    

    Impossible is nothing. /Adidas\
    

      微软已经面临与刚推出的Windows相关的诉讼,一位操作系统技术设计师指责微软剥夺了其“瓷砖”的专利权。

         昨天在美国缅因州地方法院提起诉讼的SurfCast表示,微软侵犯了其四项专利中的一项 - 第6,724,403号 - “制造,使用,销售和提供销售设备和软件产品” SurfCast的专利涵盖。这包括使用Windows Phone 7和Windows Phone 8操作系统的移动设备以及使用/ Windows 8 \

    的PC

    如何提取和分隔出现在“/”和“\”包围的文本字符串之前或之后的文本?

1 个答案:

答案 0 :(得分:5)

如果单独的文字始终位于开头/结尾,您只需使用ListFirst即可:

<cfset First = ListFirst(Text,'/\') />
<cfset Last = ListLast(Text,'/\') />

并且你将两个部分都放在不同的变量中。要确定哪个是哪个,您需要Left(Text,1)来确定原始文本是否以/开头。


否则,您可以使用rematch提取/ ... \ text:

<cfset Slashes = rematch('/[^\\]+(?=\\)',Text) />

返回以/开头的匹配数​​组 - 您无法避免在CF的正则表达式中捕获第一个斜杠(没有后备支持),但您可以随后使用substring将其删除:

<cfset Slashes[x] = Slashes[x].substring(1) />

(如果只有一个结果,请使用1代替x,否则您需要循环。)


要获得没有此值的文本,您可以使用简单的replace,如下所示:

<cfset Unslashed = replace(Text,'/#Slashes[x]#\','') />