我之前已经问过类似的问题了,但我找不到像我这样的问题,或者像我一样的问题来帮助我:).所以基本上我想要分割一个包含一堆单词的字符串,我不想返回任何不是单词的字符(这是我正在努力解决的关键问题,忽略了字符).这是我定义问题的方式:
什么构成一个单词只是一个字符串a-zA-Z(没有数字或其他任何东西)
在任何单词之间,可以有任意数量的随机其他字符
我想找回一个string[]只包含单词的内容
例如:文字: "apple^&**^orange1247pear"
我想回归:苹果,橙子,梨子阵列.
我发现我最接近的是:
Regex.Split("apple^orange7pear",@"([a-zA-Z]*)")
Run Code Online (Sandbox Code Playgroud)
其中分割出苹果/橙色/梨,但也返回一堆其他垃圾和空白字符串.
任何人都知道如何停止拆分函数返回字符串的某些部分,或者这是不可能的?
在此先感谢您给我的任何帮助:)
拆分应与您的单词之间的标记匹配.在你的正则表达式中,你在单词周围添加了一个组,因此它包含在结果中,但在这种情况下不需要.请注意,此正则表达式匹配除有效单词之外的任何内容- 任何非ASCII字母的内容:
string[] words = Regex.Split(str, "[^a-zA-Z]+");
Run Code Online (Sandbox Code Playgroud)
另一个选择是直接匹配单词:
MatchCollection matches = Regex.Matches(str, "[a-zA-Z]+");
string[] words2 = matches.Cast<Match>().Select(m => m.Value).ToArray();
Run Code Online (Sandbox Code Playgroud)
第二个选项可能更清晰,并且不会在数组的开头或结尾包含空白元素.