我知道有几种方法可以在jQuery中拆分数组,但我有一个特例: 如果我有这两个字符串:
"G09.4 What"
"A04.3 A new Code"
当我按' '
分割第一个时,我只需选择[0]
前面的代码G09.4
。当我致电[1]
时,我会收到文字:What
但是当我对[1]
A
获得的第二个字符串执行相同操作时,我想要检索A new Code
。
那么如何为每个字符串检索代码和单独的文本?
答案 0 :(得分:20)
使用
var someString = "A04.3 A new Code";
var index = someString.indexOf(" "); // Gets the first index where a space occours
var id = someString.substr(0, index); // Gets the first part
var text = someString.substr(index + 1); // Gets the text part
答案 1 :(得分:7)
您可以拆分字符串并移出返回数组中的第一个条目。然后加入剩菜,例如
var chunks = "A04.3 A new Code".split(/\s+/);
var arr = [chunks.shift(), chunks.join(' ')];
// arr[0] = "A04.3"
// arr[1] = "A new Code"
答案 2 :(得分:3)
不要在空格上拆分字符串,而是使用indexOf
和slice
的组合:
var s = "A04.3 A new Code";
var i = s.indexOf(' ');
var partOne = s.slice(0, i).trim();
var partTwo = s.slice(i + 1, s.length).trim();
答案 3 :(得分:2)
您可以使用match()
并通过正则表达式捕获所需内容:
"G09.4 What".match(/^(\S+)\s+(.+)/)
// => ["G09.4 What", "G09.4", "What"]
"A04.3 A new Code".match(/^(\S+)\s+(.+)/)
// => ["A04.3 A new Code", "A04.3", "A new Code"]
正如您所看到的,您想要的两个项目位于返回数组的[1]
和[2]
中。
答案 4 :(得分:2)
这个怎么样:
function split2(str, delim) {
var parts=str.split(delim);
return [parts[0], parts.splice(1,parts.length).join(delim)];
}
或者为了获得更高的性能,请尝试以下方法:
function split2s(str, delim) {
var p=str.indexOf(delim);
if (p !== -1) {
return [str.substring(0,p), str.substring(p+1)];
} else {
return [str];
}
}
答案 5 :(得分:0)
您可以获取代码,然后将其从原始字符串中删除,留下代码和没有代码的字符串。
var originalString = "A04.3 A new Code",
stringArray = originalString.split(' '),
code,
newString;
code = stringArray[0];
newString = originalString.replace(code, '');