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

StackOverflow https://stackoverflow.com/questions/952924

  •  11-09-2019
  •  | 
  •  

سؤال

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

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

هل كانت مفيدة؟

المحلول

يمكنك استعمال ال Substring. وظيفة:

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

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

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

نصائح أخرى

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

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

يمكنك استعمال ال Substring. طريقة كائنات سلسلة JavaScript:

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

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

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

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

أسهل طريقة هي استخدام 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"

للحصول على رقم مثل مثالك، أود أن أوصي بهذا انتهى substring:

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

هل لاحظ أن هذا سيؤدي في الواقع إلى جولة العدد، على الرغم من أنني أتصور أنه مطلوب ولكن ربما لا:

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

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

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

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

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

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

ماذا عن:

var myString = "12345.00";
myString.substring(0, myString.length - 1);
"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. $، يطابق نهاية السلسلة

استخدم Regex:

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

جرب هذا:

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

فيما يلي بديل لا أعتقد أنني رأيته في الإجابات الأخرى، فقط للمتعة.

var strArr = "hello i'm a string".split("");
strArr.pop();
document.write(strArr.join(""));

ليست مقروءة أو بسيطة مثل شريحة أو فرعية، لكنها تسمح لك باللعب مع السلسلة باستخدام بعض أساليب مجموعة رائعة، لذلك يستحق المعرفة.

var str = "test!";
var newStr = str.slice(0,-1); //test
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

إذا كنت ترغب في القيام بدورة عامة من العوامات، بدلا من مجرد تقليم الشخصية الأخيرة:

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

تعديل: يبدو أن هناك وظيفة مدمجة في هذا الأمر، كما يشير باولو. من الواضح أن هذا الحل منظف أكثر من الألغام. يستخدم parfefloat. تليها للتصليح

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

https://jsfiddle.net/invos/w3zeqv6v/

https://stackoverflow.com/Questions/34817546/javascript-how-to-delete-last-last-two-8characters-in-String.

فقط استخدم تقليم إذا كنت لا تريد المساحات

"11.01 °C".slice(0,-2).trim()

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

كان لدي سلسلة مع وضع علامة، بنيت ديناميكيا، مع قائمة علامات مرساة مفصولة بفواصل. كانت السلسلة شيء مثل:

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);

jason s:

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

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

آسف على GraphomoomoMany ولكن تم وضع علامة "مسج" في وقت سابق. وبالتالي، لا يمكنك استخدام شريحة() داخل jquery ل شريحة() هي طريقة مسج للعمليات مع عناصر DOM، وليس السلاحيات ... بمعنى آخر @ جون إريكسون أقترح حل مثالي حقا.

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

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

كخاصتنا:

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

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

أيضا بعض المشرفين يقترحون أن الطريقة الأخيرة string.substr(start,length) لا تعمل أو تعمل مع خطأ MSIE.

جرب هذا:

<script>
    var x="foo_foo_foo_bar";
    for (var i=0; i<=x.length; i++) {
        if (x[i]=="_" && x[i+1]=="b") {
            break;
        }
        else {
            document.write(x[i]);
        }
    }
</script>

يمكنك أيضا تجربة مثال العمل الحي على http://jsfiddle.net/informatesjavascript/f7wtn/87/.

استخدم Substring للحصول على كل شيء على يسار _BAR. ولكن عليك أولا الحصول على برنامج _BAR في السلسلة:

str.substring(3, 7);

3 هي تلك البداية و 7 هو الطول.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top