gpt4 book ai didi

c# - C# 中的正则表达式单词拆分

转载 作者:太空宇宙 更新时间:2023-11-03 18:45:10 36 4
gpt4 key购买 nike

我知道以前有人问过类似的问题,但我找不到一个像我的,或者足够像我的来帮助我解决问题:)。所以基本上我想拆分一个包含一堆单词的字符串,并且我不想返回任何不是单词的字符(这是我正在努力解决的关键问题,忽略字符)。这就是我定义问题的方式:

  1. 构成单词的只是任意字符a-zA-Z的字符串(没有数字或其他任何东西)

  2. 在任何单词之间,可以有任意数量的随机其他字符

  3. 我想取回一个只包含单词的string[]

例如:文本:"apple^&**^orange1247pear"

我想返回:数组中的苹果、橙子、梨。

我想我发现的最接近的是:

Regex.Split("apple^orange7pear",@"([a-zA-Z]*)")

它分离出苹果/橙子/梨,但也返回一堆其他垃圾和空白字符串。

任何人都知道如何阻止拆分函数返回字符串的某些部分,或者这不可能吗?

提前感谢您给我的任何帮助:)

最佳答案

Split 应该与您单词之间的标记相匹配。。在您的正则表达式中,您在单词周围添加了一个组,因此它包含在结果中,但在这种情况下不需要这样做。请注意,此正则表达式匹配除 有效单词之外的所有内容 - 任何不是 ASCII 字母的内容:

string[] words = Regex.Split(str, "[^a-zA-Z]+");

另一种选择是直接匹配单词:

MatchCollection matches = Regex.Matches(str, "[a-zA-Z]+");
string[] words2 = matches.Cast<Match>().Select(m => m.Value).ToArray();

第二个选项可能更清晰,并且不会在数组的开头或结尾包含空白元素。

关于c# - C# 中的正则表达式单词拆分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5056500/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com