源字符串:linq find any(array)and replace

ehxuflar  于 2023-05-26  发布在  其他
关注(0)|答案(1)|浏览(204)

我确实回顾了以下内容,它确实在某些方面有所帮助,但并没有找到最终的解决方案:
C# replace strings in array with LINQ
Replacing characters in a string array with linq
Linq to SQL replace .Any() with .Contains()
How to replace any in Linq
string replace using Linq in c#这个方法可能可行,但我目前不确定是否值得使用列表而不是数组来转换所有代码
Replacing values in a list inside a Linq query with values from a dictionary
源文件摘录:
阿尔巴尼亚欧元97
阿尔及利亚欧元110
安提瓜和巴布达(安提瓜和巴布达)
阿根廷133美元
亚美尼亚220美元
奥地利欧元> 131
澳大利亚A $230
阿塞拜疆145美元
源文档(只有PDF,经过多次请求和多年仍然没有CSV等)包含同一货币的多个版本。示例:美元

  • 美元
  • 美国(S)
  • 等等的。

设置以下数组以尝试提供某种标准化:

  • 效果很好 *
var incCurrDollar = new[] { "US dollar ($)", "US ($)", "US $" };
var incCurrEuro = new[] { "Euro (€)", "Euro" };
var incCurrPound = new[] { "Pounds Sterling (£)", "British Pounds" };
var incCurrAus = new[] { "Australian $", "A ($)", "Australian ($)" };
var incCurrZAR = new[] { "RSA Rand (R)", "RSA Rand", "Rand" };
var incCurrKHN = new[] { "Hong Kong ($)", "Hong Kong $", "HK $" };
var incCurrNZL = new[] { "New Zealand ($)", "New Zealand $", "NZ $" };

以下列方式雇用:

if (rCurrency == "")
{
   rCurrency = incCurrAus.Any(x => exRowCurrent.Contains(x)) ? "Australian ($)" : "";
   rCurrencyUnit = incCurrAus.Any(x => exRowCurrent.Contains(x)) ? "AUD" : "";
}

有没有办法用标准化版本替换exRowCurrent的适用内容?

ioekq8ef

ioekq8ef1#

这似乎是最快速和简单的方法(它只是似乎太简单了:))

rCurrency = incCurrAus.Any(x => exRowCurrent.Contains(x)) ? "Australian ($)" : "";
rCurrencyUnit = incCurrAus.Any(x => exRowCurrent.Contains(x)) ? "AUD" : "";
foreach (var repCurrency in incCurrAus)
{
   exRowCurrent = exRowCurrent.Replace(repCurrency, rCurrency);
}

相关问题