我有一个字符串,我希望根据字符串中的下划线删除一些字符。例如。
我想改变
2_MASTER BEDROOM_CFM
到
MASTER BEDROOM
或者
2734923ie_BEDROOM 2_CFM
到
BEDROOM 2
关于如何用冷融合做到这一点的任何建议?
我有一个字符串,我希望根据字符串中的下划线删除一些字符。例如。
我想改变
2_MASTER BEDROOM_CFM
到
MASTER BEDROOM
或者
2734923ie_BEDROOM 2_CFM
到
BEDROOM 2
关于如何用冷融合做到这一点的任何建议?
ColdFusion 具有这样的GetToken()
功能,它使得使用分隔符(几乎任何分隔符)操作字符串变得非常容易。假设您要解析的每个字符串都是 2 组字符串,那么这将输出MASTER BEDROOM
<cfset String1 = '2_MASTER BEDROOM_CFM'>
<cfset FirstWord = ListFirst(String1,' ')>
<cfset FirstWord = GetToken(FirstWord,2,'_')>
<cfset SecondWord = ListLast(String1,' ')>
<cfset SecondWord = GetToken(SecondWord,1,'_')>
<cfoutput>
#FirstWord# #SecondWord#
</cfoutput>
也可以将其简化为
<cfset String1 = '2_MASTER BEDROOM_CFM'>
<cfoutput>
#GetToken(ListFirst(String1,' '),2,'_')# #GetToken(ListLast(String1,' '),1,'_')#
</cfoutput>
编辑正如 Leigh 在评论中指出的那样,您也可以使用
getToken("2_MASTER BEDROOM_CFM", 2, "_")
这会将您的字符串视为包含元素2
、MASTER BEDROOM
和CFM
所以字符串以一些数字和/或字符开头,然后是下划线。然后是一些文本,最后是一个下划线,后跟 CFM?这是一个捕捉到这一点的正则表达式:
^[a-z0-9]+_(.*)_CFM$
这是一些对我有用的代码:
<cfoutput>
<cfset String1 = '2_MASTER BEDROOM_CFM'>
<cfset yourString = reReplaceNoCase(String1, "^[a-z0-9]+_(.*)_CFM$", "\1")>
#yourString#<br>
<cfset String2 = "2734923ie_BEDROOM 2_CFM">
<cfset yourString = reReplaceNoCase(String2, "^[a-z0-9]+_(.*)_CFM$", "\1")>
#yourString#<br>
</cfoutput>