【发布时间】:2018-09-03 06:53:50
【问题描述】:
我有一个文件并逐行读取文件并从字符串行中提取特定对象。
例如字符串行有两种格式。
VA001748714600006640126132202STRONG 4P 4X44G000099
VA 00174 871460000664 012 6132202 STRONG 4P 4X44G 000099
现在我需要提取字符串并将其存储到我的表中,并且在下面的字段(Desire Results)中生成下面和上面两行数据的字段。
Code Location SerialNo Quantity ItemNo Description Price
VA 00174 871460000664 12 6132202 STRONG 4P 4X44G0 000099
我尝试过的。我创建了一种返回object[] 从字符串中提取的方法
public static object[] ProcessLine(string line)
{
var obj = new object[7];
var str = line.Replace("\0", "").Replace(" ", "");
string code = str.Substring(0, 2)?.Trim();
string location = str.Substring(2, 5)?.Trim();
string serialNo = str.Substring(7, 12)?.Trim();
string quantity = str.Substring(19, 3)?.Trim();
int qty = 0;
if (!string.IsNullOrEmpty(quantity))
{
qty = Convert.ToInt32(quantity);
}
string itemNo = str.Substring(22, 7)?.Trim();
Regex MyRegex = new Regex("[^a-z ]", RegexOptions.IgnoreCase);
string description = MyRegex.Replace(line.Substring(2), @"")?.Trim();
string price = str.Substring(str.Length - 6)?.Trim();
obj.SetValue(code, 0);
obj.SetValue(location, 1);
obj.SetValue(serialNo, 2);
obj.SetValue(qty, 3);
obj.SetValue(itemNo, 4);
obj.SetValue(description, 5);
obj.SetValue(price, 6);
return obj;
}
我已经找到子字符串并存储到对象中,我也找不到描述,因为这个字段不是固定字母。
(Code,Location,SerialNo,Quantity,ItemNo and Price) 是固定的字符数,(Description) 字段是任何字符或更改。
如何使用regex 查找此字段值和描述我试图找到描述,但它提取时没有数字。
【问题讨论】:
-
为什么
Description是STRONG 4P 4X44G0并且在单词中包含spce 你的Substring有什么逻辑吗? -
@DragandDrop 错字我刚刚编辑,是的数量是 3 个字符
-
好吧,如果您将 13 替换为 12,那么 Wiktor 正则表达式将起作用。您只需访问该组
-
@DragandDrop 是的,我在编辑后看到了。我更新了答案以反映这一变化。
标签: c# regex pattern-matching