Холодный флюид странное дополнительное пространство

У меня есть функция для преобразования строки в число

<cffunction name="convertToNumber" returntype="numeric">
 <cfargument name="separator" required="Yes" type="string">
 <cfargument name="number" required="Yes" type="string">
 <cfset local.arrseparator="[" comma","="" "period",="" "lakh_crore"]="">
 <cfif arguments.separator="" eq="" "comma"="" or="" "lakh_crore"="">
 <cfif 2="" listlen(arguments.number,="" ".")="" eq="">
 <cfset local.integral="ListFirst(ARGUMENTS.number," ".")="">
 <cfset local.fractional="ListLast(ARGUMENTS.number," ".")="">
 <cfelse>
 <cfset local.integral="ARGUMENTS.number">
 <cfset local.fractional="">
 </cfset></cfset></cfelse></cfset></cfset></cfif>
 <cfset local.integral="Replace(LOCAL.integral," ",",="" "",="" "all")="">
 <cfset local.returnvalue="LOCAL.integral">
 <cfif len(trim(local.fractional))="">
 <cfset local.returnvalue="" &="." local.fractional="">
 </cfset></cfif>
 </cfset></cfset></cfif>
 <cfif arguments.separator="" eq="" "period"="">
 <cfif 2="" listlen(arguments.number,="" ",")="" eq="">
 <cfset local.integral="ListFirst(ARGUMENTS.number," ",")="">
 <cfset local.fractional="ListLast(ARGUMENTS.number," ",")="">
 <cfelse>
 <cfset local.integral="ARGUMENTS.number">
 <cfset local.fractional="">
 </cfset></cfset></cfelse></cfset></cfset></cfif>
 <cfset local.integral="Replace(LOCAL.integral," ".",="" "",="" "all")="">
 <cfset local.returnvalue="LOCAL.integral">
 <cfif len(trim(local.fractional))="">
 <cfset local.returnvalue="" &="." local.fractional="">
 </cfset></cfif>
 </cfset></cfset></cfif>
 </cfset></cfargument></cfargument></cffunction>
<cfset separatornumber="StructNew()">
<cfset separatornumber.comma="1,234,567,890.123456">
<cfset separatornumber.period="1.234.567.890,123456">
<cfset separatornumber.lakh_crore="1,23,45,67,890.123456">
<cfloop collection="#separatorNumber#" item="separator">
 <p>
 #separator# :
 
 Length : #Len(convertToNumber(separator, separatorNumber[separator]))#
 </p>
</cfloop>
</cfset></cfset></cfset></cfset>

длина равна 17, но во входном тексте сначала добавляется лишнее пробел char. Я действительно не знаю, как удалить лишнее пробел, и когда я добавляю ToString (Trim())

у него все еще есть лишнее свободное пространство

Благодарю вас

3 ответа

Вы пытались добавить output="false" в свой тег функции?

<cffunction name="convertToNumber" returntype="numeric" output="false">...</cffunction>

Надеюсь, что это поможет.


У меня возникла аналогичная проблема, и для меня работала с возвратом значения, возвращаемого из метода, в переменную, а затем выводом переменной вместо возврата из метода. Я вообще не отформатировал его, но каким-то образом это помогло.


Это очень просто. Поместите в . Нужно поставить после .

Я писал о дополнительном пространстве внутри cblunction в своем блоге.

<cffunction name="convertToNumber" returntype="numeric">
 <cfargument name="separator" required="Yes" type="string">
 <cfargument name="number" required="Yes" type="string">
 <cfsilent>
 <cfset local.arrseparator="[" comma","="" "period",="" "lakh_crore"]="">
 <cfif arguments.separator="" eq="" "comma"="" or="" "lakh_crore"="">
 <cfif 2="" listlen(arguments.number,="" ".")="" eq="">
 <cfset local.integral="ListFirst(ARGUMENTS.number," ".")="">
 <cfset local.fractional="ListLast(ARGUMENTS.number," ".")="">
 <cfelse>
 <cfset local.integral="ARGUMENTS.number">
 <cfset local.fractional="">
 </cfset></cfset></cfelse></cfset></cfset></cfif>
 <cfset local.integral="Replace(LOCAL.integral," ",",="" "",="" "all")="">
 <cfset local.returnvalue="LOCAL.integral">
 <cfif len(trim(local.fractional))="">
 <cfset local.returnvalue="" &="." local.fractional="">
 </cfset></cfif>
 </cfset></cfset></cfif>
 <cfif arguments.separator="" eq="" "period"="">
 <cfif 2="" listlen(arguments.number,="" ",")="" eq="">
 <cfset local.integral="ListFirst(ARGUMENTS.number," ",")="">
 <cfset local.fractional="ListLast(ARGUMENTS.number," ",")="">
 <cfelse>
 <cfset local.integral="ARGUMENTS.number">
 <cfset local.fractional="">
 </cfset></cfset></cfelse></cfset></cfset></cfif>
 <cfset local.integral="Replace(LOCAL.integral," ".",="" "",="" "all")="">
 <cfset local.returnvalue="LOCAL.integral">
 <cfif len(trim(local.fractional))="">
 <cfset local.returnvalue="" &="." local.fractional="">
 </cfset></cfif>
 </cfset></cfset></cfif>
 <cfreturn local.returnvalue="">
 </cfreturn></cfset></cfsilent>
</cfargument></cfargument></cffunction>
<cfset separatornumber="StructNew()">
<cfset separatornumber.comma="1,234,567,890.123456">
<cfset separatornumber.period="1.234.567.890,123456">
<cfset separatornumber.lakh_crore="1,23,45,67,890.123456">
<cfoutput>
 <cfloop collection="#separatorNumber#" item="separator">
 <p>
 #separator# : 
 
 Length : #Len(convertToNumber(separator, separatorNumber[separator]))# 
 </p>
 </cfloop>
</cfoutput>
</cfset></cfset></cfset></cfset>

licensed under cc by-sa 3.0 with attribution.