javascript شرح - جافا سكريبت فرم / شريحة / تقليم آخر حرف في السلسلة




عن العمليات (17)

لدي سلسلة ، 12345.00 ، وأريد أن 12345.0 .

لقد نظرت في trim ، ولكن يبدو أنها slice فقط مسافة بيضاء slice لا أرى كيف يمكن أن يعمل هذا. أي اقتراحات؟


Answers

@ جاسون س:

يمكنك استخدام شريحة! عليك فقط للتأكد من أنك تعرف كيفية استخدامها. تشير #s إيجابية إلى البداية ، الأرقام السالبة هي نسبة إلى النهاية.

js> "12345.00" .slice (0، -1) 12345.0

آسف ل graphomany ولكن تم وضع علامة "jquery" في وقت سابق. لذا ، لا يمكنك استخدام الشريحة () داخل jQuery لأن slice () هي طريقة jQuery لعمليات باستخدام عناصر DOM ، وليس سلاسل فرعية ... وبعبارة أخرى answerJon Erickson يقترح حلاً مثاليًا حقًا.

ومع ذلك ، ستعمل الطريقة الخاصة بك من وظيفة jQuery ، داخل Javascript بسيط. تحتاج إلى القول بسبب المناقشة الأخيرة في التعليقات ، أن jQuery هو في كثير من الأحيان تمديد القابلة للتجديد من JS أكثر من والده ECMAScript الأكثر شهرة له.

هنا توجد أيضا طريقتين:

كخاصتنا:

string.substring(from,to) كـ زائد إذا كان "إلى" فهرس nulled إرجاع باقي السلسلة. لذلك: string.substring(from) إيجابي أو سلبي ...

والبعض الآخر - substr () - التي توفر نطاقًا من السلسلة الفرعية و "الطول" يمكن أن تكون موجبة فقط: string.substr(start,length)

كما تشير بعض أدوات الصيانة إلى أن الطريقة الأخيرة string.substr(start,length) لا تعمل أو تعمل مع الخطأ لـ MSIE.


استخدم السلسلة الفرعية للحصول على كل شيء إلى يسار _bar. ولكن عليك أولاً الحصول على instr من _bar في السلسلة:

str.substring(3, 7);

3 هي أن البداية و 7 هي الطول.


باستخدام وظيفة شريحة جافا سكريبت:

var string = 'foo_bar';
string = string.slice(0, -4); // Slice off last four characters here

يمكن استخدام هذا لإزالة "_bar" في نهاية السلسلة ، بأي طول.


استخدم regex:

var aStr = "12345.00";
aStr = aStr.replace(/.$/, '');

التعبير العادي هو ما تبحث عنه:

var str = "foo_bar";
alert(str.replace(/_bar$/, ""));

إذا كنت تريد إجراء تقريب عام للعوام ، بدلاً من مجرد تقليص الحرف الأخير:

var float1 = 12345.00,
    float2 = 12345.4567,
    float3 = 12345.982;

var MoreMath = {
    /**
     * Rounds a value to the specified number of decimals
     * @param float value The value to be rounded
     * @param int nrDecimals The number of decimals to round value to
     * @return float value rounded to nrDecimals decimals
     */
    round: function (value, nrDecimals) {
        var x = nrDecimals > 0 ? 10 * parseInt(nrDecimals, 10) : 1;
        return Math.round(value * x) / x;
    }
}

MoreMath.round(float1, 1) => 12345.0
MoreMath.round(float2, 1) => 12345.5
MoreMath.round(float3, 1) => 12346.0

تحرير: يبدو أن هناك بنيت في وظيفة لهذا ، كما يشير باولو. من الواضح أن هذا الحل أنظف من نظافتي. استخدم parseFloat متبوعًا بـ Fix


يمكنك استخدام الوظيفة الفرعية :

var str = "12345.00";
str = str.substring(0, str.length - 1); // "12345.0"

هذه هي الإجابة المقبولة ، ولكن وفقًا للمحادثات أدناه ، تكون بنية الشريحة أكثر وضوحًا:

var str = "12345.00";
str = str.slice(0, -1); // "12345.0"

بالنسبة إلى رقم مثل substring بإجراء ذلك عبر substring :

alert(parseFloat('12345.00').toFixed(1)); // 12345.0

هل لاحظ أن هذا في الواقع حول العدد ، على الرغم من ذلك ، الذي أتخيله هو المطلوب ولكن ربما لا:

alert(parseFloat('12345.46').toFixed(1)); // 12345.5

debris = string.split("_") //explode string into array of strings indexed by "_"

debris.pop(); //pop last element off the array (which you didn't want)

result = debris.join("_"); //fuse the remainng items together like the sun

"a string".match(/(.*).$/)[1] // => a strin

"a string".match(/(.*).$/) // returns ["a string", "a strin"]

"a string".match(/(.*).{2}$/)[1] // to get two chars off => a stri
  1. (. *) ، يلتقط أي حرف عدة مرات
  2. . ، يتطابق مع الحرف الأخير ، في هذه الحالة
  3. $ ، يطابق نهاية السلسلة

أسهل طريقة هي استخدام طريقة slice للسلسلة ، والتي تسمح بالمواقع السلبية (المقابلة للإزاحات من نهاية السلسلة):

var s = "your string";
var withoutLastFourChars = s.slice(0, -4);

إذا كنت بحاجة إلى شيء أكثر عمومية لإزالة كل شيء بعد (بما في ذلك) علامة الشرطة السفلية الأخيرة ، فيمكنك القيام بما يلي (طالما أن s يضمن أن يحتوي على تسطير واحد على الأقل):

var s = "your_string";
var withoutLastChunk = s.slice(0, s.lastIndexOf("_"));
// withoutLastChunk == "your"

جرب هذا:

var myString = "Hello World!";
myString.slice(0, -1);

يمكنك استخدام الطريقة الفرعية لكائنات سلسلة جافا سكريبت:

s = s.substring(0, s.length - 4)

يزيل دون قيد أو شرط الأحرف الأربعة الأخيرة من السلسلة s .

ومع ذلك ، إذا كنت تريد إزالة الأحرف الأربعة الأخيرة شرطيًا ، فقط إذا كانت تمامًا _bar :

var re = /_bar$/;
s.replace(re, "");

var str = "test!";
var newStr = str.slice(0,-1); //test

في الحالات التي تريد فيها إزالة شيء قريب من نهاية سلسلة (في حالة سلاسل ذات أحجام متغيرة) ، يمكنك دمج الشريحة () و substr ().

كان لديّ سلسلة ذات ترميز ، تم إنشاؤها ديناميكيًا ، مع قائمة بعلامات الربط مفصولة بفواصل. السلسلة كانت مثل:

var str = "<a>text 1,</a><a>text 2,</a><a>text 2.3,</a><a>text abc,</a>";

لإزالة الفاصلة الأخيرة قمت بما يلي:

str = str.slice(0, -5) + str.substr(-4);

if(str.substring(str.length - 4) == "_bar")
{
    str = str.substring(0, str.length - 4);
}

AngularJS و jQuery:

إن AngularJs و JQuery مختلفان تمامًا في كل مستوى ما عدا وظيفة JQLite وستراه عند بدء تعلم الميزات الأساسية AngularJs (شرحته أدناه).

AngularJs هو إطار جانب العميل الذي يقدم لبناء تطبيق جانب العميل المستقل. JQuery هي مكتبة جانبية للعميل تلعب حول DOM.

AngularJs Cool Principle - إذا كنت تريد بعض التغييرات على واجهة المستخدم الخاصة بك فكر من منظور تغيير نموذج البيانات. غيّر بياناتك وستعيد واجهة المستخدم عرض نفسها. لا يلزمك اللعب حول DOM في كل مرة ما لم وإلى أن ذلك ليس مطلوبًا ويجب التعامل معه أيضًا من خلال Angular Directives.

للإجابة على هذا السؤال ، أود أن أشارك تجربتي في أول تطبيق للشركة مع AngularJS. هذه هي الميزات الأكثر روعة التي توفرها Angular حيث نبدأ في تغيير عقلية jQuery ونحصل على Angular كإطار عمل وليس المكتبة.

ربط البيانات في اتجاهين أمر مذهل: كان لي شبكة مع جميع الوظائف UPDATE ، DELTE ، INSERT. لدي كائن بيانات يربط نموذج الشبكة باستخدام ng-repeat. تحتاج فقط إلى كتابة سطر واحد من شفرة جافا سكريبت البسيطة لحذف وإدراج وهذا كل شيء. الشبكة تلقائيا التحديثات مع تغير نموذج الشبكة على الفور. وظيفة التحديث في الوقت الحقيقي ، لا رمز لذلك. تشعر أنك رائع!

التوجيهات القابلة لإعادة الاستخدام فائقة: اكتب توجيهات في مكان واحد واستخدمها في جميع أنحاء التطبيق. يا الهي!!! اعتدت على هذه التوجيهات لترحيل ، regex ، والتحقق من الصحة ، وما إلى ذلك. انها حقا باردة!

التوجيه قوي: الأمر متروك لتطبيقك كيف تريد استخدامه ، ولكنه يتطلب عددًا قليلاً جدًا من أسطر التعليمات البرمجية لتوجيه الطلب لتحديد HTML ووحدة التحكم (JavaScript)

أجهزة التحكم رائعة: تتحكم أجهزة التحكم بلغة HTML الخاصة بها ، ولكن هذا الفصل يعمل بشكل جيد مع الوظائف الشائعة بشكل جيد. إذا كنت تريد استدعاء نفس الوظيفة بنقرة زر واحدة على HTML الرئيسي ، فقط اكتب اسم الوظيفة نفسه في كل وحدة تحكم واكتب رمزًا منفردًا.

المكونات الإضافية: هناك العديد من الميزات المشابهة الأخرى مثل عرض تراكب في تطبيقك. لا تحتاج إلى كتابة تعليمة برمجية له ، فقط استخدم إضافة تراكب متوفرة كتراكب wc ، وسيتولى ذلك تلقائيًا جميع XMLHttpRequest (XHR).

مثالية لعمارة RESTful : كونها أطر عمل كاملة يجعل AngularJS رائعة للعمل مع هندسة RESTful. للاتصال REST CRUD APIs أسهل بكثير و

الخدمات : اكتب الرموز الشائعة باستخدام الخدمات وأقل كود في وحدات التحكم. يمكن استخدام خدمات إضافية لمشاركة وظائف مشتركة بين وحدات التحكم.

التوسعة : مدد Angular توجيهات HTML باستخدام التوجيهات الزاويّة. اكتب تعبيرات داخل html وقم بتقييمها في وقت التشغيل. قم بإنشاء توجيهاتك وخدماتك الخاصة واستخدامها في مشروع آخر دون أي جهد إضافي.





javascript trim slice chop