我有一个文本文件,每天由旧计算机系统自动生成。
不幸的是,这个文件中的列没有分隔,它们的宽度也不是完全固定的(每天每列的宽度可能会根据每列中数据的字符数而变化)。该文件确实有列标题,所以我想使用列标题找到每列的宽度。以下是列标题行的示例:
JOB_NO[variable amount of white space chars]FILE_NAME[variable amount of ws chars]PROJECT_CODE[variable amount of ws chars][carriage return]
我想要做的是获取列中第一个字符的索引和列最后一个空白的索引(来自列标题)。我想获取 JOB_NUM 中“J”的索引以及第一列的 FILE_NAME 中“F”之前的最后一个空格。
我想我还应该提到,这些列可能不会每天都以相同的顺序排列,但它们将具有相同的标题名称。
关于如何在 VB.net 或 c# 中执行此操作的任何想法?我知道我可以使用 string.indexOf("JOB_NO") 来获取列开头的索引,但是如何获取每列中最后一个空格的索引? (或表示下一列开始的下一个第一个非空白之前的最后一个空白)
最佳答案
获取所有列的索引。例如
var jPos = str.IndexOf("JOB_NO");
var filePos = str.IndexOf("FILE_NAME");
var projPos = str.IndexOf("PROJECT_CODE");
然后将它们排序到一个数组中。从最小值到最大值现在您知道您的列顺序了。第一列的最后一个空格是 [the_next_column's_index]-1。
int firstColLastSpace = ar[1] -1;
int secColLastSpace = ar[2] -1;
关于c# - 查找字符串中字符的索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4000518/