[英]Replacing multiple header name using regex
我目前正在制作一個可以讀取csv文件並可以使用Regex和csvhelper替換標題名稱的項目。
我有很多csv filse,有時它們具有不同的標頭名稱。 這些是我的示例csv文件:
范例1:
BranchName,Latitude,Longitude
China,89.2422,121.1312
范例2:
Name,Lat,Long
New Zealand,21.1212,110.3141
范例3:
B_Name4,Lati12,Longitude21
Australia,34.1231,143.1231
如何將標題名稱更改為正確的標題名稱? 像這樣:
Branch_Name,Latitude,Longitude China,89.2422,121.1312
到目前為止,我的代碼是這樣的:
csv.Reader.Configuration.PrepareHeaderForMatch = header =>
{
var newHeader = Regex.Replace(header, "@([\w]\*name[\w]*)", "Branch_Name", RegexOptions.IgnoreCase);
newHeader = Regex.Replace(header, "@([\w]\*lat[\w]*)", "Latitude", RegexOptions.IgnoreCase);
newHeader = Regex.Replace(header, "@([\w]\*long[\w]*)", "Longitude", RegexOptions.IgnoreCase);
return newHeader;
}
在此代碼中,正則表達式僅替換第一個匹配項。
我知道可以通過使用映射來實現,但是需要手動放置可能的標頭名稱。 我想要的是動態替換標題。
我不是真的“融入” C#,但是在我看來,您需要:
header
替換為newHeader
。 另外, \\w
周圍的方括號不是必需的,因為您沒有測試“以下任何字符”
您的代碼可能類似於:
csv.Reader.Configuration.PrepareHeaderForMatch = header =>
{
var newHeader = Regex.Replace(header, @"(\w*Name\w*)", "Branch_Name", RegexOptions.IgnoreCase);
newHeader = Regex.Replace(newHeader, @"(\w*Lat\w*)", "Latitude", RegexOptions.IgnoreCase);
return Regex.Replace(newHeader, @"(\w*Long\w*)", "Longitude", RegexOptions.IgnoreCase);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.