我在javascript中使用
打开文件fs.readFileSync(fileName)
将其返回给客户端之后,它就像这样存储:
[G]Hey, where did [C]we go, da[G]ys when the ra[D]ins came
[G]Down in the holl[C]ow, [G]playin' a ne[D]w game
但是,我需要x和y坐标,以便我可以更新画布。
有没有办法做到这一点?
答案 0 :(得分:0)
如果我们假设第一个字符的位置为{x: 0, y: 0}
,并且下一行将y位置递增1,那么我们可以使用类似的东西来计算字符的位置:
/**
* Find the XY positions of this string
*
* @type {string}
*/
const given = `[G]Hey, where did [C]we go, da[G]ys when the ra[D]ins came
[G]Down in the holl[C]ow, [G]playing a ne[D]w game`;
/**
* Return the coordinates of the characters in a string
*
* @param {string} string
* @returns {Array}
*/
const calculateXY = (string) => {
const positions = [];
let yIndex = 0;
let xIndex = 0;
string.split('').forEach(character => {
if(/\n/g.test(character)) {
yIndex++;
xIndex = 0;
} else {
positions.push({ [character]: { x: xIndex, y: yIndex}});
}
xIndex++;
});
return positions;
};
const result = calculateXY(given);
console.log(result);
您可以修改上面的块,传递一个乘数,使x和y以像素到下一个字符的距离递增。