[英]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.