c# - 查找字符串中字符的索引

标签 c# vb.net

我有一个文本文件,每天由旧计算机系统自动生成。

不幸的是,这个文件中的列没有分隔,它们的宽度也不是完全固定的(每天每列的宽度可能会根据每列中数据的字符数而变化)。该文件确实有列标题,所以我想使用列标题找到每列的宽度。以下是列标题行的示例:

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/

相关文章:

.net - 我需要一种快速而肮脏的方法来附加到 vb.net 中的文本文件

vb.net - 使用VB.net监视远程FTP服务器

c# - 如何在 C#/ASP.NET MVC 中动态生成此 XML 页面?

vb.net - 在这种情况下 & 操作在做什么

c# - 检测点击何时下载 winforms WebBrowser 组件中的文件

c# - 在 Silverlight 5 中使用动态 JSON - 不工作

vb.net - 有条件地隐藏GridViewCommandColumn中的DeleteButton

c# - Asp.net 日历控件中的 DropDownList

c# - 'IMutableEntityType' 不包含 'Cosmos' 的定义,并且没有可访问的扩展方法 'Cosmos' 接受第一个参数

用于搜索术语文本的 C# 代码/算法