这是我在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
< / p>
我想解析/只获取用字母构建的单词。
如何过滤它?
我试着这样做:
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()。选择(match =&gt; match.Value 因此,它将在变量词中进行修改,但我现在在var字上出错:
错误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);
我现在一言不发。
答案 0 :(得分:1)
试试这个:
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);
}
}
}
}
答案 1 :(得分:0)
如果您想要使用正则表达式,并且特别只想要字母,则可以执行此操作(匹配而不是拆分):
var words = Regex.Matches(Test, @"[a-zA-Z]+");"
您可能需要"[\w]+"
,因为我怀疑您会遇到一些字符/数字。