var.replace कोई फ़ंक्शन नहीं है


133

मैं जावास्क्रिप्ट में स्ट्रिंग को ट्रिम करने की कोशिश करने के लिए नीचे दिए गए कोड का उपयोग कर रहा हूं, लेकिन शीर्षक में उल्लिखित त्रुटि हो रही है:

function trim(str) {
    return str.replace(/^\s+|\s+$/g,'');
}

संपादित करें:

मैंने समस्या को ठीक किया .... खेद है कि मुझे कोड को यह बताना चाहिए था कि मैं इसे कैसे बुला रहा था .... मुझे एहसास हुआ कि मैं गलती से फॉर्म फील्ड की वस्तु को अपने मूल्य के बजाय पास कर रहा था।


21
strशायद एक तार नहीं है
पेकका

एक तरफ के रूप में: आप regexस्ट्रिंग के चारों ओर खुद को याद कर रहे हैं , जो वैसे भी अच्छा नहीं हो सकता है।
ग्रांट थॉमस

4
@MrDisappointment जावास्क्रिप्ट में शाब्दिक नियमित अभिव्यक्ति हैं - उन्हें एक स्ट्रिंग होने की आवश्यकता नहीं है
गैरेथ

1
@ क्लोजर: आपको english.stackexchange.com/search?q=contractions
user113716

15
str.toString().replace(/^\s+|\s+$/g,'')इसके बजाय उपयोग करें ।
एम रुस्तमी

जवाबों:


213

मेरा अनुमान है कि कोड जो आपके trimफ़ंक्शन को बुला रहा है, वह वास्तव में इसे एक स्ट्रिंग नहीं दे रहा है।

इसे ठीक करने के लिए, आप कर सकते हैं strएक स्ट्रिंग, इस तरह: str.toString().replace(...)
... के रूप में alper नीचे बताया।


39
str.toString()मेरी समस्या ठीक कर दी।
alper

ठीक है, str.toString()एकमात्र समाधान यदि आप एक सही मान कि सफलतापूर्वक परिवर्तित किया जा सकता से गुजर रहे हैं है करने के लिए एक स्ट्रिंग; मेरे मामले में मैं पूरी तरह से गलत बात कर रहा था। :)
ब्रेट

मुझे भी वही त्रुटि मिल रही है, मैंने प्रयास किया () लेकिन त्रुटि प्राप्त करना: संपत्ति को "स्ट्रिंग" को पढ़ना नहीं कर सकता अपरिभाषित है और "बदलें" के लिए समान है
हितेश कुमार

90

संभावित मुद्दे:

  • चर NUMBER (स्ट्रिंग के बजाय) है;
    num=35; num.replace(3,'three'); =====> ERROR
    num=35; num.toString().replace(3,'three'); =====> CORRECT !!!!!!
    num='35'; num.replace(3,'three'); =====> CORRECT !!!!!!
  • चर वस्तु है (स्ट्रिंग के बजाय);
  • चर परिभाषित नहीं किया गया है;

1
धन्यवाद इसके लिए, मैं एक समस्या का सामना कर रहा था, जहां, मुझे टाइपोफ़ ऑब्जेक्ट में स्ट्रिंग मिल रहा था। मैंने उस वस्तु को स्ट्रींग () के साथ परिवर्तित कर दिया। और यह काम कर रहा है! धन्यवाद!
विश्वजीत आर। शिंदे

14

प्रतिस्थापित संख्या की जगह नहीं लेगा। यह केवल तारों को बदल देता है।

यह काम करना चाहिए।

function trim(str) {
    return str.toString().replace(/^\s+|\s+$/g,'');
}

यदि आप केवल स्ट्रिंग को ट्रिम करना चाहते हैं। आप बस "str.trim ()" का उपयोग कर सकते हैं


6

आप एक स्ट्रिंग पास नहीं कर रहे हैं अन्यथा यह एक replaceविधि होगी। मुझे आशा है कि आपने function trim(str) { return var.replace(blah); }इसके बजाय टाइप नहीं किया return str.replace


6

इससे पहले कि आप वास्तव में अपने कार्य को अंजाम दें, इससे पहले आपको कुछ सत्यापन करना चाहिए:

function trim(str) {
    if(typeof str !== 'string') {
        throw new Error('only string parameter supported!');
    }

    return str.replace(/^\s+|\s+$/g,'');
}

5

क्या आपने अपने फ़ंक्शन को ठीक से कॉल किया? अर्थात। क्या आप एक पैरामीटर के रूप में पास होने वाली चीज वास्तव में एक स्ट्रिंग है?

अन्यथा, मुझे आपके कोड के साथ कोई समस्या नहीं दिखती है - नीचे दिया गया उदाहरण उम्मीद के मुताबिक काम करता है

function trim(str) {
    return str.replace(/^\s+|\s+$/g,'');
}


trim('    hello   ');  // --> 'hello'

हालाँकि, यदि आप अपने कार्यात्मक को गैर-स्ट्रिंग के साथ कहते हैं, तो आपको वास्तव में उपरोक्त त्रुटि मिलेगी:

trim({});  // --> TypeError: str.replace is not a function

5

संख्या के मामले में आप स्ट्रिंग में बदलने की कोशिश कर सकते हैं:

var stringValue = str.toString();
return stringValue.replace(/^\s+|\s+$/g,'');

3

आपको स्ट्रिंग में रूपांतरित करने के लिए jSt स्क्रिप्ट की विधि (.String) का उपयोग करना चाहिए क्योंकि प्रतिस्थापित विधि एक स्ट्रिंग फ़ंक्शन है।


1

मैंने इस समस्या को ठीक किया .... खेद है कि मुझे कोड को यह बताना चाहिए था कि मैं इसे कैसे बुला रहा था .... मुझे एहसास हुआ कि मैं गलती से फॉर्म फील्ड की वस्तु को मान रहा था बजाय इसके।

वैसे भी आपकी प्रतिक्रियाओं के लिए धन्यवाद। :)


1
आप प्रश्न को संपादित कर सकते हैं, यह अपने आप को जवाब देने से बेहतर है। ओह, और जब आप इस पर हों, तो अच्छे लोगों में से एक को चुनें और उनके उत्तर को स्वीकार करें। :-)
क्रिस्टोफर क्रुट्ज़िग

2
@ क्रिस्टोफर: नहीं; यदि वह इसे स्वयं हल करता है, तो उसे अपना उत्तर लिखना चाहिए और उसे स्वीकार करना चाहिए। यह सबसे अच्छा अभ्यास है। सवालों को हल करना और मनमाने उत्तर देना स्वीकार नहीं है।
लाइटनेस दौड़

@ टोमलाक: यहाँ कई सही उत्तर हैं, जो इस से भी पुराना है। मैं सहमत हूं कि यदि आपका पहला जवाब सही है तो यह एक अच्छी बात है।
क्रिस्टोफर क्रेउत्जिग

@ क्रिस्‍टोफर: स्‍वीकृत उत्‍तर वह होना चाहिए जिसमें ओपी द्वारा उपयोग किया गया समाधान सम्‍मिलित हो।
कक्षा

0

सुनिश्चित करें कि आप "प्रतिस्थापित" विधि के लिए स्ट्रिंग पास कर रहे हैं। एक ही मुद्दा था और स्ट्रिंग पारित करके इसे हल किया। आप इसे स्ट्रिंग () विधि का उपयोग करके भी बना सकते हैं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.