通过坐标查找字符串的索引
Finding index of a string through coordinates
我正在为 Windows 控制台项目开发一个屏幕,并且一直在努力解决以下问题。
场景:
- 我在控制台打印了一个字符串(可以在任意起始位置打印)
- 我有变量存储字符串开始处的坐标 (x,y)
- 我有打印字符串的长度。
我在猜测光标在字符串的什么位置。
示例:
- 字符串从位置 (Console.CursorLeft, Console.CursorTop) 开始,比方说 (30,14)
- 每行最大 X 为 Console.WindowWidth,比方说 50。
- 字符串长度为 250 个字符,这意味着字符串在位置 (30,19) 处结束
如果我将光标移动到随机位置 (3,16) 我希望能够计算出相应的 index/position 字符串。
我尝试了不同的公式,欧氏距离在这里不起作用,因为字符串一行一行。
这个功能我已经从头开始好几次了,现在又要从0开始了。
如果有人能就我应该使用的公式向我提出建议,我将不胜感激
public static int GetStringIndex(int startX, int startY, string text)
{
int index = -1;
int currentX = Console.CursorLeft;
int currentY = Console.CursorTop;
return index;
}
如果我没理解错的话,这就是你想要的:
int current = currentX + currentY * Console.BufferWidth;
int start = startX + startY * Console.BufferWidth;
return start <= current && current < start + text.Length ? current - start : -1;
当您将控制台想象成一个大的一维数组时,这很容易。
我正在为 Windows 控制台项目开发一个屏幕,并且一直在努力解决以下问题。
场景:
- 我在控制台打印了一个字符串(可以在任意起始位置打印)
- 我有变量存储字符串开始处的坐标 (x,y)
- 我有打印字符串的长度。
我在猜测光标在字符串的什么位置。
示例:
- 字符串从位置 (Console.CursorLeft, Console.CursorTop) 开始,比方说 (30,14)
- 每行最大 X 为 Console.WindowWidth,比方说 50。
- 字符串长度为 250 个字符,这意味着字符串在位置 (30,19) 处结束
如果我将光标移动到随机位置 (3,16) 我希望能够计算出相应的 index/position 字符串。
我尝试了不同的公式,欧氏距离在这里不起作用,因为字符串一行一行。 这个功能我已经从头开始好几次了,现在又要从0开始了。
如果有人能就我应该使用的公式向我提出建议,我将不胜感激
public static int GetStringIndex(int startX, int startY, string text)
{
int index = -1;
int currentX = Console.CursorLeft;
int currentY = Console.CursorTop;
return index;
}
如果我没理解错的话,这就是你想要的:
int current = currentX + currentY * Console.BufferWidth;
int start = startX + startY * Console.BufferWidth;
return start <= current && current < start + text.Length ? current - start : -1;
当您将控制台想象成一个大的一维数组时,这很容易。