C#如何识别字符串中的特殊字符并提取特殊字符前的常规内容
实现方案
方案1:正则表达式匹配(推荐)
直接匹配字符串开头所有的英文字母+空格,遇到第一个特殊字符自动终止匹配:
using System.Text.RegularExpressions; string id = "Hello everybodyø1Ø9ß&ëÄ"; // 匹配开头连续的大小写英文字母、空格,遇到其他字符停止 string result = Regex.Match(id, @"^[a-zA-Z\s]+").Value; Console.WriteLine(result); // 输出:Hello everybody
如果你的保留范围还包含数字、下划线等其他合法字符,只要修改[]内的匹配规则即可,比如要加数字的话就改成^[a-zA-Z0-9\s]+。
方案2:遍历查找第一个特殊字符位置
如果不想引入正则命名空间,可以手动遍历字符找截断位置:
string id = "Hello everybodyø1Ø9ß&ëÄ"; int splitIndex = id.Length; for(int i=0; i<id.Length; i++) { char c = id[i]; // 判断是否不是英文字母也不是空格,即目标特殊字符 if(!char.IsLetter(c) && c != ' ') { splitIndex = i; break; } } string result = id.Remove(splitIndex); Console.WriteLine(result); // 输出:Hello everybody
注意:如果你的需求里「合法字符」的范围还有其他自定义内容,只要修改上面的判断逻辑即可。
内容的提问来源于stack exchange,提问作者sha1
相关产品推荐
相关产品推荐

