簡體   English   中英

使用javascript替換下划線括號

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

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