1

あらゆる種類の文字を含むことができる文字列があります。したい:

  1. アクセント char を非アクセント char に置き換えます (à は a にならなければならない、é=>e など)。
  2. a-zA-Z、数字、および-;のみを文字列に保持します。

どうすればいいですか?

4

4 に答える 4

3

string.Normalize(アクセント付き文字を「基本」文字と 1 つ以上の結合文字に分割する)ことを試してNormalizationForm.FormDから、文字以外のすべての文字を除外することができます。

編集:

string s = "éäï";
var ca = s.Normalize(NormalizationForm.FormD)
          .ToCharArray()
          .Where(c => c >= 'a' && c <= 'z');
// ca contains eai now
于 2012-04-15T11:56:36.400 に答える
1

以下はあなたのために働くはずです:

// 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, "");
于 2012-04-15T11:31:06.827 に答える
-1

文字列内のすべての文字にアクセスできます。Uは実際の文字を取得し、メソッドに送信します。その方法では、if-lseまたはcaseスイッチがたくさんあります。それがあなたのルールになります。ルールの1つがあなたの文字を受け入れる場合、あなたはその文字の代わりを返します。

于 2012-04-15T11:29:42.677 に答える
-1

この関数は、許可されていないすべての文字を取り除き、アクセントを置き換えます。

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;
    }
于 2012-04-15T11:31:21.597 に答える