簡體   English   中英

JavaScript:僅按字符或按字符+數字(如果存在)拆分字符串

[英]JavaScript: Split string by characters only or by characters + number if present

如何將JavaScript字符串按字符或按字符+數字拆分(如果存在)?

例:

只是字符:

var items = "asdaasf";
//I am using
items.split('');

這樣就可以了

現在,如果我有數字:

var items = "a2sdaa5sf";

我希望將其拆分為數組,所以結果如下:

[a2,s,d,a,a5,s,f]

因此,如果字母后跟數字,則它算作1個字符。

我會使用正則表達式嗎? 語法是什么? 我對RegEx不太熟悉。

在下一個字母為字母的每個位置上進行分割。 可以先行完成:

> "a2sd12a3".split(/(?=[a-z])/i)
["a2", "s", "d12", "a3"]

如果您只想按字符或字符后跟數字進行拆分

var reg =  /([a-z]\d*)/g;
var myString = 'something'
myString.match(reg)

@Felix Kling的答案在前瞻性方面更為優雅,但是如果您想堅持最簡單的方法,請假設它始終以字符開頭。

為了補充@FelixKling的答案,而不必完全依賴正則表達式,您可以相當輕松地重現邏輯:

var input = "a1b2c3de45f6gh78i9j0";

var chunks = [];
var accum = "";
var lastWasDigit = false;
var isDigitRex = /[0-9]/;

Array.from(input).forEach(function (i) {
  var isDigit = isDigitRex.exec(i);
  if (lastWasDigit && !isDigit) {
    chunks.push(accum);
    accum = "" + i;
  } else {
    accum += i;
  }
  lastWasDigit = isDigit;
})

console.log(chunks);

亞伯拉罕·亞當的方法相似,但通過使用以下正則表達式進行了更新,使其不區分大小寫: /[az]\\d*/ig

var regexVal = /[a-z]\d*/ig;

var test1 = "asdaasf";
var test2 = "a2sdaa5sf";
var test3 = "a2sd12a3";
var test4 = "a1b2c3de45f6gh78i9j0";
var test5 = "a1b2c3De45f6gH78I9j0";

console.log(test1.match(regexVal));  // ["a", "s", "d", "a", "a", "s", "f"]
console.log(test2.match(regexVal));  // ["a2", "s", "d", "a", "a5", "s", "f"]
console.log(test3.match(regexVal));  // ["a2", "s", "d12", "a3"]
console.log(test4.match(regexVal));  // ["a1", "b2", "c3", "d", "e45", "f6", "g", "h78", "i9", "j0"]
console.log(test5.match(regexVal));  // ["a1", "b2", "c3", "D", "e45", "f6", "g", "H78", "I9", "j0"]

暫無
暫無

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

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