좋아, 나는 명백하게 그러나 명백하게 사소한 문제를 해결해야한다.독점적으로 교체하는 방법은 무엇입니까?
간단한 문자열 ab
이 있다고 가정합니다.
이제 a
을 b
및 b
으로 바꾸고 a
으로 바꾸겠습니다. 따라서 ba
으로 끝납니다.
해결 방법은 두 가지를 연속적으로 대체하는 것입니다. 하지만 그 결과는 주문에 따라 aa
또는 bb
입니다.
분명히 생산 상황은 두 가지보다 훨씬 복잡한 문자열과 대체물을 처리해야하지만 문제는 여전히 적용됩니다.
제가 가지고 있었던 한 가지 아이디어는 내가 대체 한 위치를 저장하는 것이 었습니다. 그러나 대체품이 원래 바늘과 다른 길이로되자 마자 나를 버렸습니다.
이것은 일반적인 문제이지만 C#으로 작업하고 있습니다. 여기에 나와있는 몇 가지 코드가 있습니다.
string original = "abc";
Regex[] expressions = new Regex[]
{
new Regex("a"), //replaced by ab
new Regex("b") //replaced by c
};
string[] replacements = new string[]
{
"ab",
"c"
};
for (int i = 0; i < expressions.Length; i++)
original = expressions[i].Replace(original, replacements[i]);
//Expected result: abcc
//Actual result: accc <- the b is replaced by c in the second pass.
그래서 이것을 해결할 수있는 간단한 방법이 있습니까?
2 자 이상인 경우 어떻게 바뀌나요? –
몇 가지 코드를 볼 수 있습니까? –
대체 문자가 단 하나의 문자 (대체되는 문자와 대체되는 문자) 인 경우, 이는 단일 패스 알고리즘입니다. 각 입력 문자에 대해 대체가 필요하면 대체해야하며 그렇지 않으면 캐릭터. 당신이 단지 두자를 대체하지 않는 한 아마 참조하기 쉬운 교체 테이블을 만드는 것이 가장 쉽다. – twalberg