My terminology may be a little out here, but i am trying to strip out non letters from a string in C#, so remove dashes ampersands etc, but retain things like accented chara
string result = string.Concat(input.Where(c => Char.IsLetterOrDigit(c)));
A good starting point would be to remove characters according to their Unicode character class. For example, this code removes everything that is characterized as punctuation, symbol or a control character:
string input = "I- +AM. 相关 AZURÉE& /30%";
var output = Regex.Replace(input, "[\\p{S}\\p{C}\\p{P}]", "");
You could also try the whitelisting approach, by only allowing certain classes. For example, this keeps only characters that are letters, diacritics, digits and spacing:
var output = Regex.Replace(input, "[^\\p{L}\\p{M}\\p{N}\\p{Z}]", "");
See it in action.