如何用此规则替换字符串
本文关键字:字符串 替换 规则 何用此 | 更新日期: 2023-09-27 18:31:14
>我有一个字符串可以包含任何类型的字符。我想:
- 将重音
- 字符替换为非重音字符(如 à 必须变为 a、é=>e 等);
- 在字符串中只保留 a-zA-Z、数字和
-
;
我该怎么做?
您可以
尝试string.Normalize
(NormalizationForm.FormD
将重音字符拆分为"基本"字符和一个或多个组合字符),然后过滤掉所有非字母字符。
编辑:
string s = "éäï";
var ca = s.Normalize(NormalizationForm.FormD)
.ToCharArray()
.Where(c => c >= 'a' && c <= 'z');
// ca contains eai now
以下内容应该适合您:
// Remove all accents
var bytes = Encoding.GetEncoding("Cyrillic").GetBytes(text);
text = Encoding.ASCII.GetString(bytes);
// Remove all unwanted characters
var regex = new Regex("[^a-zA-Z0-9-]");
text = regex.Replace(text, "");
您可以访问字符串中的每个字符。U 获取实际字符,将其发送到方法。在该方法中,您有一堆 if -lse 或大小写开关。那将是你的规则。如果其中一个规则接受您的字符,则返回该字符的替换。
此函数将去除所有不允许的字符并替换您的重音。
private string FormatStringToAllowableCharacters(string inString) {
string returnString;
returnString = inString.Replace("é","e");
returnString = returnString.Replace("ä","a");
returnString = returnString.Replace("ï","i");
returnString = Regex.Replace(returnString, "[^a-zA-Z0-9-]", "");
return returnString;
}