const input = "[84,672][1356,889]";
function extractCoordinates(input) {
// get a and b as strings using indexOf with offset
const aStr = input.substring(0, input.indexOf('[', 1));
const bStr = input.substring(input.indexOf('[', 1), input.length);
// create a function that will remove the brackets and coerce to a number
const mapToNumber = (s) => +s.replace(/\[|\]/g, '');
// split the strings on the comma and run the function on the parts
const a = aStr.split(',').map(mapToNumber);
const b = bStr.split(',').map(mapToNumber);
// And that's it
return [a, b];
}
// Here I use array destructuring to get the results:
const [a, b] = extractCoordinates(input);
console.log(a, b);
3条答案
按热度按时间q0qdq0h21#
您可以使用RegEx:
plupiseo2#
没有一个简单快捷的函数可以做到这一点,但是你可以使用简单的字符串函数来创建你自己的函数:
在这里,我使用了
substring
、indexOf
、replace
和split
。由于结果是一个数组,我使用
map
将原始字符串转换为数字,使用destructuring assignment获得结果。xnifntxz3#
另一种方法是将字符串转换为valid JSON string,以便:
变成
你可以把
][
替换为], [
,并把字符串封装到[]
中,然后把这个字符串parse到一个JavaScript数组中,并使用索引把值提取到变量中:或者,您可以使用destructuring assignment(如下所示)将嵌套数组提取到变量中
注意:如果您不支持
replaceAll()
,您可以使用全局正则表达式和.replace()
方法:.replace(/]\[/g, '],[')