1

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

在应用程序端,在 ColdFusion 中,我试图提取和分离出现在由“/”和“\”包围的文本字符串中和之前或之后的文本</p>

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

  1. 我想将两者分开,所以我有一个变量,其中包含字符串My baloney 有一个名字,它是
  2. 以及另一个具有HOMER且不带“/”和“\”的变量</li>

同样,“/”和“\”可以出现在一串文本之前或之后,如下所示:

/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

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

4

1 回答 1

6

如果单独的文本总是在开始/结束,你可以简单地使用ListFirst像这样:

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

并且您将在单独的变量中拥有这两个部分。要确定哪个是哪个,您需要Left(Text,1)确定原始文本是否以开头/


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

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

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

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

(如果只有一个结果,请使用1而不是,否则您将需要一个循环。)x


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

<cfset Unslashed = replace(Text,'/#Slashes[x]#\','') />
于 2012-10-31T15:25:13.133 回答