2014-11-05 5 views
1

[@ID = ###] 형식의 문자열에있는 값을 다른 것으로 바꾸려고합니다. 문자열은 [@ID = ###]과 다른 것들을 포함 할 수 있지만, 그것은 내가 우려하고있는 괄호 안에있는 비트입니다. 예를 들어 : -은 "2"는 그대로 유지해야문자열의 일부를 다른 것으로 바꾸십시오.

이 들어이

[ID = 3671818 @], 나는 "[ID = 3,671,818이 @]"단지 대체합니다.

나는 이런 식으로 뭔가를 시도하려는 :

value = value.Replace().Insert(); 

그러나 나는 그것이 작동하지 않습니다 알고있다. 한 줄의 코드에서이 작업을 수행 할 수있는 방법이 있습니까? 아니면 다양한 문자열 변수로 작업해야합니까? 마찬가지로, "[@ ID ="및 "]"피스를 먼저 제거하기 위해 startIndex 변수 및 endIndex 변수가 필요합니까? 그 사이에있는 대상을 대상으로 할 수 있습니까?

+0

자신이 많은 일을하고있는 것처럼 들립니다. 문자를 제거하고 추가하는 대신 새 문자열을 만들고 "+2"를 추가하는 것이 가장 좋은 이유는 무엇입니까? –

+0

@BobKaufman 당신이 무슨 뜻인지 알 수 있을지 모르겠군요 ...? 어떤 점에서 Split()을 사용해야한다는 것을 의미합니까? –

+0

"+2"로 끝나는 문자열을 만들고 싶다면 문자열에서 문자를 삭제하고 새로운 문자를 삽입하는 것보다는 그걸 해보시겠습니까? –

답변

6

이것은 정규 표현식가 무엇 : 당신의 대체 문자열로 대체됩니다 (괄호 포함) 괄호 내

string str = @"[@ID=3671818]+2"; 
var newStr = Regex.Replace(str, @"\[.*\]", "TEST"); 
Console.WriteLine(newStr); 
//newStr = "TEST+2" 

다.

당신이 브래킷을 유지하려면, 당신은 괄호 내의 텍스트를 찾을 수 lookaheads 및 lookbehinds을 사용하는

@"(?<=\[).*(?=\])" //newStr = "[TEST]+2" 

를 사용하여 텍스트를 대체 할 것입니다.

Regex를 배우는 한 많은 가이드가 있으며, 테스트를 위해 RegExr을 선호합니다.

+0

이것은 나에게 큰 도움이되었습니다. 감사! –

관련 문제