0
두 개의 배열이 있습니다. 하나는 특정 문자열에서 검색 할 문자 집합을 포함하고 다른 하나는 특정 문자를 대체 할 문자열 집합입니다 .String.Replace는 유니 코드 문자 'ARABIC LETTERS'를 대체하지 않습니다.
특정 문자가 발견되면 주어진 문자열을 수정하기 위해 표준 String.Replace()
을 사용하려고합니다. 내가 사용하려고하는 메서드는 문자열에 내 배열의 문자/문자가 포함되어 루프를 입력하고 작업을 실행하지만 끝에는 아무 것도 변경되지 않는다는 것을 감지합니다.
왜이 문제를 해결할 것인지 잘 모르겠습니다. 아래는 제 코드와 결과입니다.
static void Main(string[] args)
{
var wordToPass = "heyك";
wordToPass = wordToPass.MultiReplace();
Console.WriteLine(wordToPass);
Console.ReadKey();
}
확장 방법
는 문자를 대체 :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;
}
}
넵. 말이된다. 고맙습니다. –
이 질문에 답하는 다른 질문을 살펴 보았지만 바꾸기의 반환 값을 다시 지정하는 것을 염두에 두지 않았습니다. 한숨 –