删除字符 与ReplaceNoCase()的ColdFusion(Remove charact

2019-10-21 14:46发布

我需要显示从被格式化一个类似的数据记录的输出:XXXX:12345(XXXXXXXXX)

然而,我要输出的唯一数据是“12345”,并与前两个零,即输出应该看起来像“0012345”。 在“12345”中的记录是仅作为示例,每个记录具有分配一个唯一的编号。 一个例子记录看起来是这样的:CAST:98765(RPOS1234-XY)

我可以使用ReplaceNoCase()拉只有这些数据,记录的? 如果是的话,我会如何编写代码来删除不想要的字符?

Answer 1:

你可以使用一些功能在一行代码做到这一点。

str = 'CAST:98765 (RPOS1234-XY)';
projectCode = '00' & listLast( listFirst( str, ' ' ), ':' );

writeDump( projectCode );

为了从最内部的功能解释这个代码出去。

ListFirst()获取第一个元素在基于您指定的分隔符的列表,在这种情况下,分隔符是“” - 空间 - 是的,你可以使用空格作为分隔符。

ListLast()获取最后一个元素的基础上指定的分隔符的列表,在这种情况下,分隔符是“:”

第一部分simplt追加“00”上面的函数调用的结果。



Answer 2:

如果我不得不使用reReplaceNoCase或reFindNoCase这是我会怎么做。

function parseTokenUsingReFindNoCase(token) {
    var local = {};

    // use regex to locate position of number (see only set of parentheses in regex pattern)
    local.positions = reFindNoCase("^.+:(\d+).+$", arguments.token, 1, true);
    // obtain the token substring and ensure at least 7 digits with preceding 0's
    local.result = numberFormat( mid(arguments.token, local.positions.pos[2], local.positions.len[2]), repeatString(0, 7));

    return local.result;
}


function parseTokenUsingReReplaceNoCase(token) {
    var local = {};

    // use regex to strip away text before and after the token
    local.result = reReplaceNoCase(arguments.token, "(^\D+|\s.+$)", "", "all");
    // ensure at least 7 digits with preceding 0's
    local.result = numberFormat(local.result, repeatString(0, 7));

    return local.result;
}

<h1>ParseToken</h1>

<h2>Using ReFindNoCase</h2>
<cfdump var="#parseTokenUsingReFindNoCase("CAST:98765 (RPOS1234-XY)")#" /><br>
<cfdump var="#parseTokenUsingReFindNoCase("CAST:591498 (FUBAR56-XE)")#" /><br>
<cfdump var="#parseTokenUsingReFindNoCase("CAST:784 (RFP4542-LL)")#" /><br>

<h2>Using ReReplaceNoCase</h2>
<cfdump var="#parseTokenUsingReReplaceNoCase("CAST:98765 (RPOS1234-XY)")#" /><br>
<cfdump var="#parseTokenUsingReReplaceNoCase("CAST:591498 (FUBAR56-XE)")#" /><br>
<cfdump var="#parseTokenUsingReReplaceNoCase("CAST:784 (RFP4542-LL)")#" /><br>

ParseToken

使用ReFindNoCase

  • 0098765
  • 0591498
  • 0000784

使用ReReplaceNoCase

  • 0098765
  • 0591498
  • 0000784


Answer 3:

它不使用replaceNoCase,但根据您的意见,这将工作:

<cfset castTicket = projectCode>
  <!--- strip the first 5 characters, since it is always "CAST " --->
<cfset castTicket = removechars(castTicket, 1,5)>
  <!--- now return the leftmost characters, up to the space --->
<cfset castTicket = left(castTicket, find(" ", castTicket) )>  
  <!--- format the number so it has 7 digits (2 leading zeros in this case) --->
<cfset castTicket = NumberFormat(castTicket, 0000000)>
<cfoutput>#castTicket#</cfoutput>

返回:

0012345



文章来源: Remove characters in with ReplaceNoCase() ColdFusion