我想要将第一个和第二个数字替换为0,如果它以0开头,则无需更改。 例如:445656 变成 056....
<cfif number (BEGIN WITH?) "44">
<cfset number = Right(number , Len(number )-2) />
但这只会移除前两位数字。感谢您的支持。
我想要将第一个和第二个数字替换为0,如果它以0开头,则无需更改。 例如:445656 变成 056....
<cfif number (BEGIN WITH?) "44">
<cfset number = Right(number , Len(number )-2) />
看起来您将以“0开头”的数字保存为字符串。请尝试以下方法:
<!--- // a number that does not start with zero --->
<cfset theNumber = "445656" />
<cfset theNumber = left(theNumber, 1) is 0 ? theNumber : REReplaceNoCase(theNumber, "^[0-9]{2}", 0) />
<!--- // returns 05656 --->
<cfoutput>#theNumber#</cfoutput>
<hr />
<!--- // a number that starts with zero --->
<cfset theNumber = "05656" />
<cfset theNumber = left(theNumber, 1) is 0 ? theNumber : REReplaceNoCase(theNumber, "^[0-9]{2}", 0) />
<!--- // returns 05656 --->
<cfoutput>#theNumber#</cfoutput>
<cfset theNumber = left(theNumber, 1) is 0
? theNumber
: REReplaceNoCase(theNumber, "^[4]{2}", 0) />
REReplaceNoCase(theNumber, "^[4]{2}", 0)
。它将适用于任何以44开头的号码,包括44777或44325。 - Alex Babanleft(theNumber),1 is 0
隐式地将字符串转换为数字。我会用 "0"
。在替换值中也是一样的。如果它无意中将新值设置为数字而不是字符串并截断前面的 0,那么调试问题会让你发疯。编辑注意:REReplaceNoCase()
返回一个字符串,因此最终结果不太可能强制转换回数字。但仍然需要将替换值强制转换为数字。微观优化,但还是应该一开始就写好。 - ShawntheNumber
,而是使用the[与该字符串相关的任何内容]
。 - ShawnREReplaceNoCase()
(该模式中没有涉及到字母),你可以直接使用REReplace("^44", theNumber, "0")
。 - David Faber这个 reReplace() 函数可以在任何字符串上运行,只会在字符串以 44 开头时才将其修改并替换为 0。
<cfscript>
phoneNumber = "44556677";
phoneNumber = reReplace(phoneNumber, "^44", "0");
writeOutput(phoneNumber);
</cfscript>
^44
更改为 ^[1-9][0-9]
,以替换任何不以 0
开头的两个数字。 - Alex
left()
函数吗?前两位数字 - SOS