var.replace কোনও ফাংশন নয়


132

আমি জাভাস্ক্রিপ্টে স্ট্রিংটি ছাঁটাইতে চেষ্টা করার জন্য নীচের কোডটি ব্যবহার করছি তবে শিরোনামে উল্লিখিত ত্রুটিটি পাচ্ছি:

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

সম্পাদনা:

আমি সমস্যাটি স্থির করে দিয়েছি .... দুঃখিত, আমি কোডটি কীভাবে এড়ানো উচিত ছিল তা কীভাবে করা উচিত .... বুঝতে পেরেছিলাম যে আমি ভুলবশত ফর্ম ক্ষেত্রের মানটি না দিয়ে নিজেই পাস করছি passing


21
strসম্ভবত একটি স্ট্রিং নয়
পেক্কা

একদিকে যেমন: আপনি regexনিজেই স্ট্রিংয়ের চারপাশে উদ্ধৃতিগুলি হারিয়েছেন যা কোনওভাবেই ভাল নাও হতে পারে।
গ্রান্ট থমাস

4
@ মিরিডিসিপয়েন্টমেন্ট জাভাস্ক্রিপ্টের আক্ষরিক নিয়মিত প্রকাশ রয়েছে - তাদের স্ট্রিং হওয়ার দরকার নেই
গ্যারেথ

1
@Closure: আপনি খুঁজে পেতে পারেন (অথবা শুরু করতে চান) এ এক আলোচনা english.stackexchange.com/search?q=contractions
user113716

15
str.toString().replace(/^\s+|\s+$/g,'')পরিবর্তে ব্যবহার করুন।
এম রোস্তামী

উত্তর:


212

আমার অনুমান যে কোড আপনার ডাকছে হয় trimফাংশন হয় না আসলে এটি একটি স্ট্রিং ক্ষণস্থায়ী।

এটির সমাধানের জন্য, আপনি করতে পারেন strএকটি স্ট্রিং, এভাবে: str.toString().replace(...)
... যেমন Alper নিচের নির্দিষ্ট।


39
str.toString()আমার সমস্যা সমাধান।
আল্পার

ওয়েল, 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

স্ট্রিংতে রূপান্তর করার জন্য আপনার জাভা স্ক্রিপ্টের পদ্ধতি toString () ব্যবহার করা উচিত কারণ প্রতিস্থাপন পদ্ধতিটি একটি স্ট্রিং ফাংশন।


1

আমি সমস্যাটি স্থির করে দিয়েছি .... দুঃখিত আমার কোডটি কীভাবে এটি করা উচিত ছিল তা কীভাবে করা উচিত .... বুঝতে পেরেছিলাম যে আমি দুর্ঘটনাক্রমে ফর্ম ফিল্ডের অবজেক্টটি এর মানের চেয়ে পাস করছি।

যাইহোক আপনার প্রতিক্রিয়া জন্য ধন্যবাদ। :)


1
আপনি প্রশ্নটি সম্পাদনা করতে পারেন, এটি নিজের উত্তর দেওয়ার চেয়ে ভাল। ওহ, এবং আপনি যখন এখান থেকে চলেছেন, তখন একটি দুর্দান্ত লোককে বেছে নিন এবং তাদের উত্তরটি স্বীকার করুন। :-)
ক্রিস্টোফার ক্রিউটজিগ

2
ক্রিস্টোফার: না; যদি সে নিজেই এটি সমাধান করে তবে তার উচিত তার উত্তর লিখে তা গ্রহণ করা। এটি তাই সেরা অনুশীলন। প্রশ্নের সমাধান দেওয়া এবং স্বেচ্ছাসেবীর উত্তর গ্রহণ করা তা নয়।
অরবিটে

@ তোমালাক: এখানে বেশ কয়েকটি সঠিক উত্তর রয়েছে, এটির চেয়েও পুরানো। আমি সম্মত হই যে আপনার নিজের উত্তরটি যদি প্রথম সঠিক উত্তর হয় তবে তা গ্রহণ করা ভাল ™, এবং অবশ্যই সমাধানটিকে প্রশ্নের মধ্যে রাখার পরামর্শ দিতে চান না।
ক্রিস্টোফার ক্রিউটজিগ

@ ক্রিস্টোফার: গ্রহণযোগ্য উত্তরটি এমনই হওয়া উচিত যা সমাধানে ওপি ব্যবহার করে।
অরবিটে হালকা ঘোড়দৌড়

0

নিশ্চিত করুন যে আপনি "প্রতিস্থাপন" পদ্ধতিতে স্ট্রিং পাশ করছেন। একই সমস্যা ছিল এবং স্ট্রিং পাশ করে এটি সমাধান করেছে। আপনি স্ট্রিং () পদ্ধতি ব্যবহার করে স্ট্রিংয়েও এটি তৈরি করতে পারেন।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.