0
2つの配列があります.1つは特定の文字列で検索する文字のセットを含み、もう1つは特定の文字を置き換える文字列のセットです。String.ReplaceはUnicode文字「ARABIC LETTERS」を置き換えません
特定の文字が見つかったときに、標準のString.Replace()
を使用して、指定された文字列を変更しようとしています。私が使用しようとしている方法は、文字列に文字列/文字配列が含まれていることを検出し、ループに入り、操作を実行しますが、最後には何も変更されません。
これを解決する理由や方法についてはわかりません。以下は私のコードと結果です。
static void Main(string[] args)
{
var wordToPass = "heyك";
wordToPass = wordToPass.MultiReplace();
Console.WriteLine(wordToPass);
Console.ReadKey();
}
文字置き換えるための拡張メソッド:System.String
は不変であるよう
public static class StringExtension
{
public static readonly char[] SignsArray = new char[] { 'ك', 'ـ', 'ض', 'ؤ', 'ا', 'ط', 'ئ', 'إ', 'ر', 'أ', ' ', 'ہ', 'ء', 'ب', 'ة', 'ت', 'ز',
'س', 'ص', 'ظ', 'ع', 'ج', 'ح', '´', 'ف', 'ث', '¶', '°', '؛', '·', '`' };
public static readonly string[] RepArray = new string[] { "SS", "UE", "OE", "AE", "C", "OE", "AE", "AA", "N", "A", "A", "A", "A", "E", "E", "E", "O", "O", "O",
"U", "U", "I", "I", "'", "Y", "E", "A", ".", ".", ".", "'"};
// Extension on String
public static string MultiReplace(this string stringValue)
{
HashSet<char> set = new HashSet<char>(SignsArray);
for (int i = 0; i < stringValue.Length; ++i)
{
var currentCharacter = stringValue[i];
string valueToReplace;
string replaceValue;
if (set.Contains(currentCharacter))
{
valueToReplace = Char.ToString(stringValue[i]);
replaceValue = RepArray[Array.IndexOf(SignsArray, currentCharacter)];
stringValue.Replace(Convert.ToString(currentCharacter), replaceValue);
}
}
return stringValue;
}
}
意味をなさないありがとうございました。 –
これに答える他の質問を見直しましたが、Replaceの戻り値を再割り当てすることに気をつけませんでした。一息 –