【发布时间】:2012-05-30 23:43:09
【问题描述】:
我有一个由许多不同单词组成的长字符串。
我想遍历所有这些,如果单词包含特殊字符或数字('-' 除外),或者以大写字母开头,我想删除它(整个单词不只是那个字符) .出于所有意图和目的,“外来”字母都可以算作特殊字符。
显而易见的解决方案是循环遍历每个单词(拆分后),然后循环遍历每个字符 - 但我希望有更快的方法吗?也许使用正则表达式,但我几乎没有使用它的经验。
谢谢
添加:
(例如我想要的:)
输入:“this Is an Example of 5 words in an input like-so from example.com”
输出:{this,an,of,words,in,an,input,like-so,from}
(到目前为止我已经尝试过)
List<string> response = new List<string>();
string[] splitString = text.Split(' ');
foreach (string s in splitString)
{
bool add = true;
foreach (char c in s.ToCharArray())
{
if (!(c.Equals('-') || (Char.IsLetter(c) && Char.IsLower(c))))
{
add = false;
break;
}
if (add)
{
response.Add(s);
}
}
}
编辑 2:
对我来说,单词应该是由空格分隔的多个字符 (a..z)。 ,/./!/... 最后不应计入“特殊字符”条件(实际上主要是为了删除 url 等)
所以: “我看到一条狗。它是黑色的!” 应该导致 {saw,a,dog,was,black}
【问题讨论】:
-
真的有必要吗?我认为我的问题完全可以理解。
-
我们并不是要你把你的整个项目放在这里。您说“我有一个长字符串..” 将字符串的某些部分放在您希望进行检查的地方。然后告诉我们这个
foo单词应该检查bar条件,结果输出应该是FooBar -
@NikhilAgrawal 大多数程序员都能够将功能请求(“文学”)翻译成代码 - 阅读没有什么问题吗?也许 Aabela 在编写任何代码之前 正在考虑一个解决方案,这非常有意义。
-
@Aabela,请定义“单词”。
foo.是单词还是单词后跟句号?123、.或!#%&是一个词吗(要删除)? -
嗯,我希望它是“一个单词后跟一个句点”,但我没有考虑过这个问题 - 我只是用空格分隔它们 - 但我真的应该修复 .和 , 在结尾处。