我如何从文本框中解析/获取仅为字母的单词

本文关键字:获取 单词 文本 | 更新日期: 2023-09-27 18:20:55

这是我在form1按钮事件中的代码:

StringBuilder sb = new StringBuilder();
var words = Regex.Split(textBox1.Text, @"(?=(?<=[^'s])'s+)");
foreach (string word in words)
{
    ScrambleTextBoxText scrmbltb = new ScrambleTextBoxText(word.Trim());
    scrmbltb.GetText();
    sb.Append(word.Replace(word.Trim(), scrmbltb.scrambledWord));
}
textBox2.AppendText(sb.ToString());

我从textBox1得到了我想要的所有单词,但有些单词也是符号,比如----?/'n'r

我只想解析/获取用字母构建的单词。

如何过滤?

我试着这样做:

StringBuilder sb = new StringBuilder();
            var words = Regex.Split(textBox1.Text, @"(?=(?<=[^'s])'s+''w+)".Cast<Match>().Select(match => match.Value));
            var matches = Regex.Matches(textBox1.Text, "''w+").Cast<Match>().Select(match => match.Value);
            foreach (string word in words)
            {
                ScrambleTextBoxText scrmbltb = new ScrambleTextBoxText(word.Trim());
                scrmbltb.GetText();
                sb.Append(word.Replace(word.Trim(), scrmbltb.scrambledWord));
            }
            textBox2.AppendText(sb.ToString());

我需要var单词,因为Regex.Split在复制textBox1和textBox2之间的空格方面对我很有用。所以我尝试添加"''w+"和.Cast().Select(match=>match.Value因此,它将在变量词中出现,但我现在在变量词上出现错误:

错误1"System.Text.RegularExpressions.Regex.Split(string,int)"的最佳重载方法匹配包含一些无效参数

错误2参数2:无法从"System.Collections.Generic.IEnumerable"转换为"int"

我该怎么解决?

我现在试过了,但没用:

var words = Regex.Matches(textBox1.Text, @"(?=(?<=[^'s])'s+''w+)").Cast<Match>().Select(match => match.Value);

我现在一句话也说不出来了。

我如何从文本框中解析/获取仅为字母的单词

试试这个:

var matches = Regex.Matches(textBox1.Text, "''w+").Cast<Match>().Select(match => match.Value);

应该给你所有没有空字符串的单词。

全码

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
namespace ConsoleApplication1
{
  class Program
  {
    static void Main(string[] args)
    {
      var matches = Regex.Matches("Line 1 this is any random text. 'r'n Line 2 Another Line?! 'r'n Line 3 End of text. ", "''w+").Cast<Match>().Select(match => match.Value);
      foreach (string sWord in matches)
      {
        Console.WriteLine(sWord);
      }
    }
  }
}

如果你想用Regex做这件事,特别是只想要字母,你可以这样做(匹配而不是拆分):

var words = Regex.Matches(Test, @"[a-zA-Z]+");"

你可能想要"['w]+",因为我怀疑你想要的是一些字符/数字。