簡體   English   中英

如何在包含前導零的JavaScript中增加字符串?

[英]How to increment a string in JavaScript containing leading zeros?

我有這樣的字符串:

MPG_0023

我想找到類似的東西

MPG_0023 + 1

我應該得到

MPG_0024

如何在JavaScript中做到這一點? 請注意,如果沒有前導零,或者一個前導零仍然可以正常工作,如MPG23應該給MPG24或MPG023應該給MPG024。

不應假設存在下划線或前導零,唯一的事情是,第一部分可以是任何字符串,甚至沒有字符串,並且數字部分可以具有也可以不具有前導零,並且它是任何類型的數字,因此它應適用於0023(返回0024)或gp031(返回gp032)等。

這是一種不使用正則表達式的快速方法。.只要在數字前始終有一個下划線,並且只要數字為4位數字,就可以使用。

 var n = 'MPG_0023'; var a = n.split('_'); var r = a[0]+'_'+(("0000"+(++a[1])).substr(-4)); console.log(r); 

或者,如果您想進行正則表達式,則下划線將無關緊要。

 var n = "MPG_0099"; var r = n.replace(/(\\d+)/, (match)=>("0".repeat(4)+(++match)).substr(-4)); console.log(r); 

您可以使用正則表達式進行更改,如以下代碼所示

 var text = "MPG_0023"; var getPart = text.replace ( /[^\\d.]/g, '' ); // returns 0023 var num = parseInt(getPart); // returns 23 var newVal = num+1; // returns 24 var reg = new RegExp(num); // create dynamic regexp var newstring = text.replace ( reg, newVal ); // returns MPG_0024 console.log(num); console.log(newVal); console.log(reg); console.log(newstring); 

將正則表達式與padStart功能一起使用

 function add(str, n) { return str.replace(/(\\d+)/, function(match) { var length = match.length; var newValue = Number(match) + n; return newValue.toString(10).padStart(length, "0"); }); } console.log(add("MPG_023", 101)); console.log(add("MPG_0023", 101)); console.log(add("MPG_0000023", 10001)); console.log(add("MPG_0100023", 10001)); 

您可以將其強制轉換為數字,增加值並進行反向轉換。 然后,通過查看字符串的長度來檢查是否需要前導零。

以下代碼段:

 let str = "MPG_0023", num = Number(str.substr(4)) + 1, newStr = String(num); function addLeading0(str) { return str.length === 2 ? '00' + str : (str.length === 3 ? '0' + str : str); } console.log("MPG_" + addLeading0(newStr)); 

使用正則表達式,您可以這樣做。

var text1 = 'MPG_0023';
var text2 = 'MPG_23';

var regex = /(.*_[0]*)(\d*)/;

var match1 = regex.exec(text1);
var match2 = regex.exec(text2);

var newText1 = match1[1] + (Number(match1[2]) + 1);
var newText2 = match2[1] + (Number(match2[2]) + 1);

console.log(newText1);
console.log(newText2);

遞增填充相同的值( 內聯注釋

 var prefix = "MPG_" var padDigit = 4; //number of total characters after prefix var value = "MPG_0023"; console.log("currentValue ", value); //method for padding var fnPad = (str, padDigit) => (Array(padDigit + 1).join("0") + str).slice(-padDigit); //method to get next value var fnGetNextCounterValue = (value) => { var num = value.substring(prefix.length); //extract num value ++num; //increment value return prefix + fnPad(num, padDigit); //prepend prefix after padding }; console.log( "Next", value = fnGetNextCounterValue(value) ); console.log( "Next", value = fnGetNextCounterValue(value) ); console.log( "Next", value = fnGetNextCounterValue(value) ); 

一種方法是將字符串拆分為“ _”字符,遞增數字,然后將零加回到數字上。

var testString = "MGP_0023";
var ary = testString.split("_");

var newNumber = Number(ary[1]) + 1;
var result = ary[0] + pad(newNumber);

// helper function to add zeros in front of the number
function pad(number) {
    var str = number.toString();
    while (str.length < 4) {
        str = '0' + str;
    }

    return str;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM