jquery - 在找到整数或 space 时拆分(即拆分课程代码)

jquery - split when integer or space is found (i.e. split course code)

我有一个课程代码列表,例如:

CRS100
CRS301
CRS332
...etc.

我想拆分这些课程代码,这样我就可以做这样的事情:

<a data-courseProgram="CRS" data-courseCode="301">CRS301</a>

任何帮助将不胜感激:)

你只需要将 ID 分成两半,因为前三个字母是一致的,剩下的就是 ID,所以你可以这样做,

var s = 'CRS332'; //course ID
var i = s.length / 2; //split the string into half
var course = s.substr(0, i); //gives you CRS
var courseId = s.substr(i);  //gives you 332

为了更优雅的解决方案,您还可以使用正则表达式并将字符串分成两半,例如

var str = 'CRS332';
var splitId = str.match(/.{1,3}/g);
console.log(splitId); //outputs ['CRS', '332'];

现在,您可以分别使用上面的 splitId[0]splitId[1]


如果您有像 CRS332 和 CRS 332 这样的 id 组合(带有 space),您可以使用以下代码(我刚刚在 fiddle 上编写和测试,可能会遗漏极端情况你必须处理)

//all ids, and create a new container to push the splitted ids
var dir = ['CRS 332', 'CRS447'], newDir = [];

//loop all the course ids
for(var i = 0, l = dir.length; i < l; i++) {

  //if space exists, split it   
  if(dir[i].indexOf(' ') !== -1) {
    //space exists in the string, do a normal split
    newDir.push(dir[i].split(' '));
  } else {
    //if no space, split it in half
    newDir.push(dir[i].match(/.{1,3}/g));
  }
}

console.log(newDir);