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);
我有一个课程代码列表,例如:
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);