Mik*_*ike 1 coldfusion coldfusion-9
在我的数据库中,一些关键字被"/"和"\"字符包围.
在应用程序端,在ColdFusion中,我试图提取和分离出现在"/"和"\"包围的文本字符串之前或之后的文本
所以说我有一句话:我的胡扯有一个名字,它是/ HOMER \
同样,"/"和"\"可以出现在一串文本之前或之后,如下所示:
/Ash\ Gotta catch’em all
Run Code Online (Sandbox Code Playgroud)
.
/Nike\ Just do it.
Run Code Online (Sandbox Code Playgroud)
.
Impossible is nothing. /Adidas\
Run Code Online (Sandbox Code Playgroud)
.
微软已经面临与刚刚推出的Windows相关的诉讼,一家操作系统技术设计师指责微软剥夺了其"瓷砖"专利.
SurfCast昨天在缅因州一家美国地方法院提起的诉讼中表示,微软侵犯了其四项专利中的一项 - 第6,724,403号 - 其中包括"制造,使用,销售和提供销售设备和软件产品",SurfCast覆盖专利.这包括使用Windows Phone 7和Windows Phone 8操作系统的移动设备以及使用/ Windows 8的PC
如何提取和分隔出现在"/"和"\"包围的文本字符串之前或之后的文本?
如果单独的文本始终位于开头/结尾,您可以像这样简单地使用ListFirst:
<cfset First = ListFirst(Text,'/\') />
<cfset Last = ListLast(Text,'/\') />
Run Code Online (Sandbox Code Playgroud)
而且你将两个部分都放在不同的变量中.要找出哪个是哪个,你需要做一个Left(Text,1)
来确定原始文本是否以/
.
否则,您可以使用rematch提取/ ...\text :
<cfset Slashes = rematch('/[^\\]+(?=\\)',Text) />
Run Code Online (Sandbox Code Playgroud)
返回一个以/
- 开头的匹配数组- 你无法避免在CF的正则表达式中捕获第一个斜杠(没有lookbehind支持),但你可以使用substring删除它:
<cfset Slashes[x] = Slashes[x].substring(1) />
Run Code Online (Sandbox Code Playgroud)
(使用1
而不是x
只有一个结果,否则你需要一个循环.)
要获得没有此值的文本,您可以使用如下的简单替换:
<cfset Unslashed = replace(Text,'/#Slashes[x]#\','') />
Run Code Online (Sandbox Code Playgroud)