我想从字符串中提取单词,但是如果有的话,它应该忽略其间的所有符号和数字。
string = C#%3HA#*$03IR
我想从上面的字符串中提取单词CHAIR
。忽略所有符号和数字。
答案 0 :(得分:3)
字符串是char
的集合,因此使用linq的Where
,您可以查询char.IsLetter
的所有内容:
string str = "C#%3HA#*$03IR";
string result = new string(str.Where(c => char.IsLetter(c)).ToArray());
你也可以这样做:
string result = String.Concat(str.Where(c => char.IsLetter(c)));
答案 1 :(得分:3)
您可以使用Regex
命名空间内的System.Text.RegularExpressions
类来完成它。
using System;
using System.Text.RegularExpressions;
namespace RemoveSpecialCharactersConsoleApp
{
class Program
{
static void Main(string[] args)
{
string line = "C#%3HA#*$03IR";
line = RemoveSpecialCharacters(line);
Console.WriteLine(line);
Console.Read();
}
public static string RemoveSpecialCharacters(string input)
{
Regex r = new Regex("(?:[^a-z]|(?<=['\"])s)", RegexOptions.IgnoreCase | RegexOptions.CultureInvariant | RegexOptions.Compiled);
return r.Replace(input, string.Empty);
}
}
}
<强>输出强>
答案 2 :(得分:2)
Regex rgx = new Regex("[^a-zA-Z -]");
str = rgx.Replace(str, "");
答案 3 :(得分:0)
C#中的字符串与数组类似,因此您可以循环遍历字符串的所有字符,并使用以下字符检查它们是否为字母:
Regex reg = new Regex("^[a-zA-Z]+$");
因此你可以在数组(字符串)中保留或删除它们。