[英]Replace underscore with brackets using javascript
我有一個字符串AverageLogon_Seconds_
我需要用'('
和第二個Underscore with ')'
替換第一個下划線。
意味着我需要獲得像AverageLogon(Seconds)
這樣的文本。
我已經檢查過str.replace(/_/g, ')');
,但它將取代下划線iwth')'。
誰可以幫我這個事。
謝謝
使用String#replace
回調和計數器變量。 將_
用(
在奇數位置)
替換為偶數位置,其中計數器變量可用於找出位置。
var str = 'AverageLogon_Seconds_', i = 0; var res = str.replace(/_/g, function() { return i++ % 2 == 0 ? '(' : ')'; }); console.log(res);
我覺得將"_something_"
模式作為一個整體來定位會更為謹慎。 就像是
str.replace(/_([a-z0-9 -]+)_/gi, '($1)')
您可以根據預期在下划線之間出現的字符縮小[a-z0-9 -]
字符類。 現在,我有字母,數字,空格和連字符。
var tests = [ 'AverageLogon_Seconds_', 'AverageLogon_Seconds_ and some other_data_', 'Oh no, too_many_underscores___'], out = document.getElementById('out'), rx = /_([a-z0-9 -]+)_/gi; tests.forEach(function(test) { out.innerHTML += test + ' => ' + test.replace(rx, '($1)') + '\\n'; });
<pre id="out"></pre>
var str = 'AverageLogon_Seconds_', replacement = ')';
//replace the last occurence of '_' with ')'
str = str.replace(/_([^_]*)$/,replacement+'$1');
//replace the remaining '_' with '('
console.log(str);
這很容易。 只需要一個班輪。
testString = "AverageLogon_Seconds_";
replacedString = testString.replace(/_/, '(').replace(/_/, ')');
console.log(replacedString);
輸出:“AverageLogon(Seconds)”
Pranav的解決方案很好。 我傾向於喜歡寫一些我可以很快推理的東西(有時候不那么優雅)。 另一種方式(閱讀DJ Khaled的聲音):
function replaceUnderscores(str) { return str.split('_').map(function (part, ind) { if (part === '') { return ''; } if (ind % 2 === 0) { return part + '('; } else { return part + ')'; } }).join(''); } // "AverageLogon(Seconds)" console.log(replaceUnderscores('AverageLogon_Seconds_'));
這會有用嗎
var t = "AverageLogon_Seconds_";
var ctr=0;
while(t.contains('_')){
if(ctr==0){
t= t.replace('_','(');
ctr++;
}
else{
t= t.replace('_',')');
ctr--;
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.