簡體   English   中英

如何在 JavaScript 中實現字符串操作

[英]How to achieve String Manipulation in JavaScript

問題陳述是這樣的:我有一份合同。 每月續訂時,合同名稱應為 append 和續訂標識符。 例如,開始時名稱是myContract ,然后第一次續訂名稱應該是myContract-R1 ,下一個續訂名稱應該是myContract-R2等等。每次續訂時,名稱應該自動更改。 那么在 Jquery 我該怎么做呢?

這是一個 JavaScript 問題,而不是 jQuery 問題。 jQuery 對 JavaScript 的內置字符串操作幾乎沒有任何作用。

聽起來您想采用“myContract”或“myContract-Rx”形式的字符串,並擁有一個附加“-R1”(如果沒有“-Rx”)或增加那里的數字的function。

沒有捷徑可走,你必須這樣做。 這是一個有效的草圖,我希望它可以被優化:

function incrementContract(name) {
  var match = /^(.*)-R([0-9]+)$/.exec(name);
  if (match) {
    // Increment previous revision number
    name = match[1] + "-R" + (parseInt(match[2], 10) + 1);
  }
  else {
    // No previous revision number
    name += "-R1";
  }
  return name;
}

實時復制

您可以為此使用正則表達式:

s = s.replace(/(-R\d+)?$/, function(m) {
  return '-R' + (m.length === 0 ? 1 : parseInt(m.substr(2), 10) + 1);
});

模式(-R\d+)?$將匹配修訂號 ( -R\d+ ) 如果有一個 ( ? ) 和字符串的結尾 ( $ )。

如果之前沒有修訂號,替換將返回-R1 ,否則它將解析修訂號並增加它。

你如何獲得續訂號碼? 從日期計算,還是從數據庫中獲取?

var renewal = 1,
    name = 'myContract',
    newname = name+'R'+renewal;

或者可能喜歡

$(function(){
function renew(contract){
    var num_re = /\d+/,
        num = contract.match(num_re);
    if (num==null) {
        return contract+'-R1';
    } else {
        return contract.replace(num_re,++num[0]);  
    }
}

var str = 'myContract';  

   new_contract = renew(str); // myContract-1
   new_contract = renew(new_contract); // myContract-2
   new_contract = renew(new_contract); // myContract-3

});

這里 jQuery 幫不了你。 純 JavaScript 使用字符串

PS我這里有簡單的reg exp,這對你的例子來說並不具體(但它有效)。 更好地使用 TJ Crowder 示例中的 reg-exp

暫無
暫無

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

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