如何识别字符串中的特殊字符?c#



我试图获得字符串中出现在某个字符之前的所有字符。

例如:

string id = "Hello everyone! Good day today.";
id = id.Remove(id.IndexOf('!'));
Console.WriteLine(id);
//output will be "Hello everyone"

这可以工作,但是当我从一个特殊文件中读取文本并处理包含特殊字符的字符串时,我遇到了一些麻烦。

例如:

string id = "Hello everybodyø1Ø9ß&ëÄ"

如果我只想得到"Hello everyone "文本,我该怎么做?这些特殊字符可以是任何字符

一种简单的方法是指定允许的字符并使用Enumerable.TakeWhile:

string id = "Hello everybodyø1Ø9ß&ëÄ";
string allowedChars = " abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
string result = string.Concat(id.TakeWhile(allowedChars.Contains)); // Hello everybody

或者使用Regex,如下所示(它只检查是否有特殊字符)。

试试这个:

string[] KeepCharacters = { "a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"," ", "~","`","!","@","#","$","%","^","&","*","(",")","-","_","+","=",@"","|","}","]","{","[","'",":",";","/","?",".",">",",","<","1","2","3","4","5","6","7","8","9","0", Convert.ToString((char)34)};
string id = "Hello everybodyø1Ø9ß&ëÄ";
for(int i =0; i < id.Length; i++)
{
if(KeepCharacters.Contains(id.Substring(i,1).ToLower()) == false)
{
id = id.Remove(i);
break;
}
}

您可以创建一个添加到string的扩展方法,并按您的意愿使用它。

还请注意,我使用了StringBuilder,因为它不会在内存中创建新对象,而是动态扩展内存以容纳修改后的字符串(与通过常规字符串连接进行的操作相反,这可能会影响长字符串的性能)

public static string GetRegularString(this string str) {
StringBuilder sb = new StringBuilder();
foreach (char c in str) {
if ((c >= '0' && c <= '9') || (c >= 'A' && c <= 'Z') || (c >= 'a' && c <= 'z') || c == '.' || c == '_' || c == ' ') {
sb.Append(c);
}
else{
break;
}
}
return sb.ToString();
}

我仔细研究了一下,找到了我自己的解决方案。

id = id.Remove(id.IndexOf(id.Where(x => !char.IsLetterOrDigit(x)).First()));

可以添加Regex命名空间。它允许用你想要的字符/数字/符号替换特殊字符。

static void Main(string[] args)
{
string id = "Hello everybodyø1Ø9ß&ëÄ";
string op = string.Empty;
Console.WriteLine("i/p is " + id );
Regex rgx = new Regex("[^A-Za-z0-9]");
for (int i = 0; i < id.Length; i++)
{
bool isNUmber = int.TryParse(id[i].ToString(), out int n);
op += (rgx.IsMatch(id[i].ToString()) || isNUmber  ) ? " " : id[i].ToString();
}
Console.WriteLine("O/p is " + op);
Console.ReadLine();
}

查看更多信息:https://techstrology.com/c-sharp-if-string-contains-space-or-special-character/

我们可以在system . text . regulareexpression下使用Regex. 这个引用应该被添加到程序文件中。这段代码帮助检查字符串是否包含特殊字符,newRegex(" [^ a- za -z0-9] ")这有助于检查字符串是否包含特殊字符。有一个函数叫做IsMatch()当字符串包含特殊字符时返回true。

string temp = "sathee *d@@lkr:d";
Regex rgx = new Regex("[^A-Za-z0-9]");
bool hasSpecialChars = rgx.IsMatch(temp);

最新更新