2010-08-10 11 views
6

मैं स्ट्रिंग नंबरcoldfusion अजीब अतिरिक्त स्थान

<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 ARGUMENTS.separator eq "lakh_crore"> 
     <cfif ListLen(ARGUMENTS.number, ".") eq 2> 
      <cfset LOCAL.integral = ListFirst(ARGUMENTS.number, ".") /> 
      <cfset LOCAL.fractional = ListLast(ARGUMENTS.number, ".") /> 
     <cfelse> 
      <cfset LOCAL.integral = ARGUMENTS.number /> 
      <cfset LOCAL.fractional = "" /> 
     </cfif> 

     <cfset LOCAL.integral = Replace(LOCAL.integral, ",", "", "ALL") /> 
     <cfset LOCAL.returnValue = LOCAL.integral /> 

     <cfif Len(Trim(LOCAL.fractional))> 
      <cfset LOCAL.returnValue &= "." & LOCAL.fractional /> 
     </cfif> 
    </cfif> 

    <cfif ARGUMENTS.separator eq "period"> 
     <cfif ListLen(ARGUMENTS.number, ",") eq 2> 
      <cfset LOCAL.integral = ListFirst(ARGUMENTS.number, ",") /> 
      <cfset LOCAL.fractional = ListLast(ARGUMENTS.number, ",") /> 
     <cfelse> 
      <cfset LOCAL.integral = ARGUMENTS.number /> 
      <cfset LOCAL.fractional = "" /> 
     </cfif> 

     <cfset LOCAL.integral = Replace(LOCAL.integral, ".", "", "ALL") /> 
     <cfset LOCAL.returnValue = LOCAL.integral /> 

     <cfif Len(Trim(LOCAL.fractional))> 
      <cfset LOCAL.returnValue &= "." & LOCAL.fractional /> 
     </cfif> 
    </cfif> 

    <cfreturn LOCAL.returnValue /> 

</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# : 
     <input type="Text" value="#convertToNumber(separator, separatorNumber[separator])#"> 
     Length : #Len(convertToNumber(separator, separatorNumber[separator]))# 
    </p> 
</cfloop> 

लंबाई 17 है एक समारोह कन्वर्ट करने के लिए है, लेकिन इनपुट पाठ में यह पहली बार चार में अतिरिक्त सफेद स्थान जोड़ें। मैं वास्तव में अतिरिक्त सफेद स्थान को निकालने का तरीका पता नहीं, और जब मैं ToString जोड़ने (ट्रिम())

<input type="Text" value="#ToString(Trim(convertToNumber(separator, separatorNumber[separator])))#"> 

यह अभी भी अतिरिक्त सफेद स्थान है

आप

उत्तर

13

क्या आपने अपने फ़ंक्शन टैग में output="false" जोड़ने की कोशिश की है?

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

आशा है कि मदद करता है।

+0

सीरान आर्चर: उत्तर के लिए धन्यवाद। यह काम करता है: डी – tsurahman

+0

याप, यह काम करता है। मैं >> आउटपुट = "झूठा" रखना भूल जाता हूं <<। – ppshein

+1

अन्य चीजें जिन्हें आप देखना चाहते हैं वे cfsetting (enablecfoutputonly विशेषता) और कोल्डफ्यूजन व्यवस्थापक में दमन व्हाइटस्पेस सेटिंग हैं। –

0

धन्यवाद यह बहुत आसान है । को अपने <cffunction> पर रखें। <cfargument> के बाद <cfsilent> डालने की आवश्यकता है।

मैंने अपने ब्लॉग में कफक्शन के भीतर अतिरिक्त स्थान के बारे में लिखा है।

<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 ARGUMENTS.separator eq "lakh_crore"> 
      <cfif ListLen(ARGUMENTS.number, ".") eq 2> 
       <cfset LOCAL.integral = ListFirst(ARGUMENTS.number, ".") /> 
       <cfset LOCAL.fractional = ListLast(ARGUMENTS.number, ".") /> 
      <cfelse> 
       <cfset LOCAL.integral = ARGUMENTS.number /> 
       <cfset LOCAL.fractional = "" /> 
      </cfif> 
      <cfset LOCAL.integral = Replace(LOCAL.integral, ",", "", "ALL") /> 
      <cfset LOCAL.returnValue = LOCAL.integral /> 
      <cfif Len(Trim(LOCAL.fractional))> 
       <cfset LOCAL.returnValue &= "." & LOCAL.fractional /> 
      </cfif> 
     </cfif> 
     <cfif ARGUMENTS.separator eq "period"> 
      <cfif ListLen(ARGUMENTS.number, ",") eq 2> 
       <cfset LOCAL.integral = ListFirst(ARGUMENTS.number, ",") /> 
       <cfset LOCAL.fractional = ListLast(ARGUMENTS.number, ",") /> 
      <cfelse> 
       <cfset LOCAL.integral = ARGUMENTS.number /> 
       <cfset LOCAL.fractional = "" /> 
      </cfif> 
      <cfset LOCAL.integral = Replace(LOCAL.integral, ".", "", "ALL") /> 
      <cfset LOCAL.returnValue = LOCAL.integral /> 
      <cfif Len(Trim(LOCAL.fractional))> 
       <cfset LOCAL.returnValue &= "." & LOCAL.fractional /> 
      </cfif> 
     </cfif> 
     <cfreturn LOCAL.returnValue /> 
    </cfsilent> 
</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# : 
      <input type="Text" value="#convertToNumber(separator, separatorNumber[separator])#"> 
      Length : #Len(convertToNumber(separator, separatorNumber[separator]))# 
     </p> 
    </cfloop> 
</cfoutput> 
+0

ppshein: उत्तर के लिए धन्यवाद, सफेद जगह अभी भी – tsurahman

+0

दोस्त .. !! ऐसा इसलिए है क्योंकि मैंने जो कहा वह नहीं किया। मेरे उपरोक्त कोडिंग को समझें। मैंने को में डालने के रूप में संपादित किया है जैसा कि मैंने आपको पहले बताया था। इसे समझो। – ppshein

1

मैं एक समान समस्या में भाग गया, और मेरे लिए जो काम किया गया वह विधि से एक चर में वापस मूल्य डाल रहा था और फिर विधि से वापसी के बजाय चर को आउटपुट कर रहा था। मैंने इसे बिल्कुल प्रारूपित नहीं किया, लेकिन किसी भी तरह से मदद की।

संबंधित मुद्दे