Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Coldfusion 捕获特定的文本字符串并从XML中删除文本字符串_Coldfusion_Coldfusion 9 - Fatal编程技术网

Coldfusion 捕获特定的文本字符串并从XML中删除文本字符串

Coldfusion 捕获特定的文本字符串并从XML中删除文本字符串,coldfusion,coldfusion-9,Coldfusion,Coldfusion 9,我试图找出如何在下面的XML描述中只显示|和|之间的单词。例如,“网络”或“视频游戏”这个词 我试过这个,但是因为每个单词的长度不同,所以我没有成功。而且,我也不能摆脱| <cfoutput>#Right(thefeed2.rsschannel.eachresult.resultnumber[x].metadata.xmlAttributes.v, 10)#</cfoutput> #对(offeed2.rsschannel.eachresult.resultnumber

我试图找出如何在下面的XML描述中只显示|和|之间的单词。例如,“网络”或“视频游戏”这个词

我试过这个,但是因为每个单词的长度不同,所以我没有成功。而且,我也不能摆脱|

<cfoutput>#Right(thefeed2.rsschannel.eachresult.resultnumber[x].metadata.xmlAttributes.v, 10)#</cfoutput>
#对(offeed2.rsschannel.eachresult.resultnumber[x].metadata.xmldattributes.v,10)#
我还试图做一个相反的任务——过滤掉|和|之间的单词,这样它就不会显示。换句话说,以第一个项目为例,显示整个描述,减去“web”或“视频游戏”一词

我已经试过了,但同样的问题是,我只想过滤掉描述,在|和|之间没有单词

<cfoutput>#left(thefeed2.rsschannel.eachresult.resultnumber[x].metadata.xmlAttributes.v, 500)#</cfoutput>
#左(offeed2.rsschannel.eachresult.resultnumber[x].metadata.xmldattributes.v,500)#
所以我的问题是

1:如何从description元素中提取|和|之间的单词

2:在数字1的另一个例子中,如何删除描述中|和|之间的单词

顺便说一下,“offeed2”就是我所说的XML提要

<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
<rsschannel>
<resultsnumbertotal>11    </resultsnumbertotal>
<eachresult>
<resultnumber N="1">
<U>/file.cfm?id=yahoocom    </U>
<T>Yahoo    </T>
<metadata N="description" V="Quickly find what you're searching for, get in touch with friends and stay in-the-know |Web|"/>
</resultnumber>

<resultnumber N="2">
<U>/file.cfm?id=halo    </U>
<T>Halo    </T>
<metadata N="description" V="Halo is a multi-billion dollar science fiction video game franchise created by Bungie and now managed by 343 Industries and owned by Microsoft Studios. |VideoGames|"/>
</resultnumber>

<resultnumber N="3">
<U>/file.cfm?id=bingcom    </U>
<T>Bing    </T>
<metadata N="description" V="Bing is a search engine that brings together the best of search and people in your social networks to help you spend less time searching and more time doing. |Web|"/>
</resultnumber>

<resultnumber N="4">
<U>/file.cfm?id=lal    </U>
<T>Lakers    </T>
<metadata N="description" V="The Los Angeles Lakers are an American professional basketball team based in Los Angeles, California. They play in the Pacific Division |Sports|"/>
</resultnumber>

<resultnumber N="5">
<U>/file.cfm?id=quick    </U>
<T>Stay in the Know    </T>
<metadata N="description" V="Quickly find what you're searching for, get in touch with friends and stay in-the-know |Misc|"/>
</resultnumber>

<resultnumber N="6">
<U>/file.cfm?id=multi    </U>
<T>Billion Dollars    </T>
<metadata N="description" V="Halo is a multi-billion dollar science fiction video game franchise created by Bungie and now managed by 343 Industries and owned by Microsoft Studios. |Misc|"  />
</resultnumber>

<resultnumber N="7">
<U>/file.cfm?id=searching    </U>
<T>Searches    </T>
<metadata N="description" V="Bing is a search engine that brings together the best of search and people in your social networks to help you spend less time searching and more time doing. |Web|" />
</resultnumber>

<resultnumber N="8">
<U>/file.cfm?id=LosAngeles    </U>
<T>Los Angeles    </T>
<metadata N="description" V="The Los Angeles Lakers are an American professional basketball team based in Los Angeles, California. They play in the Pacific Division |Sports|"/>
</resultnumber>

<resultnumber N="9">
<U>/file.cfm?id=quick    </U>
<T>Stay in the Know    </T>
<metadata N="description" V="Quickly find what you're searching for, get in touch with friends and stay in-the-know |Misc|"/>
</resultnumber>

<resultnumber N="10">
<U>/file.cfm?id=LosAngeles    </U>
<T>Los Angeles    </T>
<metadata N="description" V="The Los Angeles Lakers are an American professional basketball team based in Los Angeles, California. They play in the Pacific Division"/>
</resultnumber>

<resultnumber N="11">
<U>/file.cfm?id=quick    </U>
<T>Stay in the Know    </T>
<metadata N="description" V="Quickly find what you're searching for, get in touch with friends and stay in-the-know |SummaryofDescription|"/>
</resultnumber>

</eachresult>
</rsschannel>

11
/file.cfm?id=yahoocom
雅虎
/file.cfm?id=halo
光环
/file.cfm?id=bingcom
宾
/file.cfm?id=lal
湖人队
/file.cfm?id=quick
知情
/file.cfm?id=multi
亿美元
/file.cfm?id=搜索
搜查
/file.cfm?id=洛杉矶
洛杉矶
/file.cfm?id=quick
知情
/file.cfm?id=洛杉矶
洛杉矶
/file.cfm?id=quick
知情

是否总是只有两个
|
符号?如果是这样,您可以使用
GetToken
查找值

<cfset Mystring = GetToken(variable,1,'|') />

GetToken
将变量视为一个带有分隔符
|


要删除单词,可以使用
replace(variable,Mystring,”)

要使用regex和REreplace()。示例(cfscript中):

(一)

(二)


regex
\\\\\\\\\
将匹配以

开头和结尾的任何文本。对于字符串操作,总是后退一步寻找模式来帮助您获得创造性。例如,CFMLs的“列表”概念带来了一些乐趣。更高级的用户总是直接使用正则表达式,但如果您刚刚开始,这肯定是一个高级主题。我立刻认出您的字符串是一个由管道(|)分隔的列表。您还可以看到,句子是由空格分隔的单词列表。下面是一些代码

 //set your string to something
 <cfset myString = "thefeed2.rsschannel.eachresult.resultnumber[x].metadata.xmlAttributes.v" />
//now let's treat the phrase as a list, we'll get position 2 of the list.
<cfset myWord = listGetAt(myString,2,'|');
//assuming you don't want the pipes in the clean string, let's just do a fast replace once
<cfset cleanString = replace(myString,"|#myWord#|","") />
//if you do want the pipes then you'll need a regex (a more advanced topic)
<cfset cleanStringWithPipes = rereplace(myString,"(\|)[ A-Za-z0-9]+(\|)","\1\2") />
//将字符串设置为
//现在让我们把这个短语当作一个列表,我们将得到列表的第2位。

谢谢,第二个代码运行得很好!我相信第一个是完全相同的,只是文本的替换。我可能解释得很糟糕,但对于第一个,我想提取并显示单词,而不是替换它。例如,我想显示单词“web”或“VideoGames”,并删除描述中的其余文本,以提取匹配的文本。另外,
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\/code>可能比
\\\\\\\\\\\\/code>更有意义。很酷,我以前从未听说过GetToken,非常有趣!我尝试了以下方法,但它删除了“web”一词,而不是描述的其余部分。我做错了什么#GetToken(offeed2.rsschannel.eachresult.resultnumber[1].metadata.xmlAttributes.v,1,“|”)#我建议您向沙盒大师请教:甜心,谢谢,这非常有效!!!我的词在|和|中给出了一个词,而cleanString给出了一个没有这个词的好的、干净的字符串!不要
重新替换(myString),“(\)[A-Za-z0-9]+(\)”,“\1\2”)
-这很愚蠢。如果你这样做的话,只需重新替换(myString,\\\[A-Za-z0-9]+\\\\\\”,“\\\\\”)
。愚蠢还是可怕?我应该听从自己的建议,退后一步。
origString = thefeed2.rsschannel.eachresult.resultnumber[x].metadata.xmlAttributes.v;
newString = REreplace(origString, "\|.*\|", "");
 //set your string to something
 <cfset myString = "thefeed2.rsschannel.eachresult.resultnumber[x].metadata.xmlAttributes.v" />
//now let's treat the phrase as a list, we'll get position 2 of the list.
<cfset myWord = listGetAt(myString,2,'|');
//assuming you don't want the pipes in the clean string, let's just do a fast replace once
<cfset cleanString = replace(myString,"|#myWord#|","") />
//if you do want the pipes then you'll need a regex (a more advanced topic)
<cfset cleanStringWithPipes = rereplace(myString,"(\|)[ A-Za-z0-9]+(\|)","\1\2") />