如何删除字符串中的specfic模式或删除包含模式的数组元素

时间:2016-07-21 18:56:11

标签: regex coldfusion

我很难弄清楚如何删除一些不需要的字符。

以下是我的数组数据示例。我想删除所有出现的" Rail National"或删除包含字符串" Rail National"的元素。

sample array from need to remove text "Rail National" or part of this string

3 个答案:

答案 0 :(得分:1)

如果我理解你的问题,这将完全删除包含文本' rail national'的数组中的任何元素。其中的任何地方:

newArray = [
  'Adult Child Class',
  'Ticket Type',
  'I rail national Rail Nation',
  'Rail Nationa',
  'Rail National',
  'Route']
// Remove items from the array
.filter( function(i){ 
    return !(findNocase( i, 'Rail National' ) > 0);
// Edit items in the array
} ).map( function(i){ 
    return replaceNocase( i, 'il Nati', '', 'all' );
} );

filter函数将针对数组中的每个项运行闭包,并且只有在闭包返回true时才返回最终数组中的该项。

http://cfdocs.org/arrayfilter

map函数将返回数组,其中每个项都可能被修改。

http://cfdocs.org/arraymap

注意,您没有说出您正在使用的CF引擎。此示例代码将在Lucee Server上运行。

答案 1 :(得分:0)

<!--- your data --->
<cfset yourArray = [

    "Adult Child class",
    "Ticket type",
    "Elk NIL StD RTN",
    "ANYTIME R",
    "Start Date",
    "Number",
    "I Rail National Rail Nation",
    "Valid unt",
    "Rail Nationa",
    "price"

]>

<!--- array for filtered data --->
<cfset filteredArray = []>

<cfloop array="#yourArray#" index="element">

    <!--- remove elements (by skipping) that contain "Rail National" (case insensitive) --->
    <cfif element contains "Rail National">
        <cfcontinue>
    </cfif>

    <!--- remove all occurences of substring "il Nati" (case insensitive) in element --->
    <cfset element = replaceNoCase(element, "il Nati", "", "ALL")>

    <!--- additional filters --->
    <!--- ... --->

    <!--- add/keep element --->
    <cfset filteredArray.add(element)>

</cfloop>

<cfdump var="#filteredArray#">

答案 2 :(得分:0)

根据要求提供正则表达式版本:

CR=chr(13);
myRegEx="(^|[\n])[^Rr\n]*Rail Nationa[^\n]*([\n]|$)";
myList=ArrayToList(myArray,CR);
myList=ReReplace(myList,myRegEx,CR,"All");
myArray=ListToArray(myList,CR);

链式RegEx版本:

CR=chr(13); 
myRegEx="(^|[\n])[^Rr\n]*Rail Nationa[^\n]*([\n]|$)";
myArray=myArray.toList(CR).ReReplace(myRegEx,CR,"ALL").ListToArray(CR);

略短的链条:

myArray=myArray.toList(CR).ReplaceAll(myRegEx,CR).ListToArray(CR);

缩进版本 - 通常优先于一个衬垫:

myArray=myArray
    .toList(CR)
    .ReplaceAll(myRegEx,CR)
    .ListToArray(CR);