从字符串中提取单词忽略符号和数字

时间:2017-07-06 05:38:37

标签: c# asp.net

我想从字符串中提取单词,但是如果有的话,它应该忽略其间的所有符号和数字。

string = C#%3HA#*$03IR

我想从上面的字符串中提取单词CHAIR。忽略所有符号和数字。

4 个答案:

答案 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);
        }
    }
}

<强>输出

enter image description here

答案 2 :(得分:2)

Regex rgx = new Regex("[^a-zA-Z -]");
str = rgx.Replace(str, "");

答案 3 :(得分:0)

C#中的字符串与数组类似,因此您可以循环遍历字符串的所有字符,并使用以下字符检查它们是否为字母:

Regex reg = new Regex("^[a-zA-Z]+$");

因此你可以在数组(字符串)中保留或删除它们。