c# - 如何在 C# 中按位置获取行和列?
问题描述
考虑以下字符串:
var text = @"
Hello How
Are You doing?
""MyNameIs:""
XYY
";
如何在具有相关列和行的任何位置(> = 0)获取字符?
位置意味着将所有字符放在一行中,然后从零开始计数,例如:
\n \n \n H e l l o ' ' H o w \n A r e ...
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ...
public CharInfo GetCharInfo(int position) // for example position 35
{
// ???
return new CharInfo(char, line, column);
}
解决方案
将字符串拆分为行:
var lines = text.Split('\n');
然后您可以通过以下方式访问例如第 3 行和第 4 列
char result = lines[3][4];
(假设您从零开始计数)
编辑:更新您的问题后,此代码可能会帮助您:
int position = 35;
string[] lines = text.Split('\n');
int lineIndex = 0;
int columnIndex = 0;
foreach(string line in lines)
{
if(position < line.Length)
{
columnIndex = position;
break;
}
else
{
position -= line.Length + 1; // +1 because split removes the \n
}
lineIndex++;
}
Console.WriteLine("line="+lineIndex);
Console.WriteLine("column="+columnIndex);
Console.WriteLine("char="+text[position]);
这会为您提供位置 35 处的字符、行和列。
推荐阅读
- flutter - 列内的自定义导航器
- wso2 - wso2 IS 5.9 的 authenticationendpoint cookie/标头中缺少反 csrf 令牌
- node.js - Heroku 应用程序崩溃:at=error code=H10 desc=“App crashed” method=GET path=“/”
- java - java.lang.NoClassDefFoundError: org/quartz/SchedulerFactory
- python - 在Django中获取对象作为输出而不是List
- postgresql - CTE中的Postgres SELECT或INSERT?
- c# - 将一个表行动态映射到另一个表列
- sql - 如何遍历 SQL 表并选择数据中的峰值?
- javascript - 访问 asyncData 中的数据对象 - Nuxt
- c - 如何从字符数组中获取特定元素并将整个值存储为整数?