如何搜索文本中的字符列表

时间:2019-05-29 13:18:33

标签: excel powerquery

我必须在Power Query的文本字段中搜索非英语文本。几种语言具有特殊字符,可以在文本字段中搜索,如果发现则很明显,这些文本字段是非英语文本。

我已经尝试并尝试找到特定的语言字符,例如“é”或“ä”等。但是我知道仅使用条件列函数搜索每个字符,如果找到,则随后将“ 0”作为值我将所有条件列相乘,如果为0,则为非英语文本,如果为“ 1”,则为英语。

= Table.AddColumn(#"Added Conditional Column13", "Custom É", each if Text.Contains([Text 1], "É") then 0 else if Text.Contains([Text 2], "É") then 0 else if Text.Contains([Text 3], "É") then 0 else 1)

是否存在一种在文本字段中搜索特殊字符列表的解决方案(例如“ÁáÉéÖöÜÜüäß”)->搜索>结果“ 0”(如果在文本中找到任何人,否则给出输出“ 1”)。

2 个答案:

答案 0 :(得分:4)

您可以使用List.ContainsAny检查列表是否包含第二个列表中的任何值。

使用Text.ToList将其组合以将字符分成一个列表,然后您会得到类似的内容:

= Table.AddColumn(#"Prior Step", "Contains Special Characters", each List.ContainsAny(Text.ToList([Values]),Text.ToList("ÁáÉéÖöÜüäß")), type logical)

当然,此方法要求您提供要测试的“特殊”字符列表。您可以翻转此轮,并指定“英文”字符:

#"English Characters" = "abcdefghijklmnopqrstuvwxyz0123456789 ,.:;", // include all characters you consider "English"
#"Added Custom" = Table.AddColumn(#"Prior Step", "Contains Special Characters", each not List.ContainsAny(Text.ToList([Values]),List.Union({Text.ToList(#"English Characters"), Text.ToList(Text.Upper(#"English Characters"))})), type logical)

答案 1 :(得分:0)

我将查看Range,find()命令,了解如何在Excel中搜索字符。我也可以将其与VBA Strings and ASCII结合使用,后者是Excel可以识别的所有ASCII字符