2012-12-12 2 views
0

특정 문자를 제거해야하는 문자열이 있습니다.문자열에서 색인을 찾기 전에 특정 양의 문자 제거

문자열 노트 = "TextEntry_Slide_7 | 메모장 하나 내가 사방에 텍스트를 입력하기 위하여려고하고있다 :) | 250887 | 0^TextEntry_Slide_10 | 메모장이 : wrilun3q 4p9834m ggddi : (| 996,052 | 2^TextEntry_Slide_14 || .

: 774159 | 4^TextEntry_Slide_16 | tnoinrgb RT 조원의 N | | 805,585 5 "

나는 또한 ^ 문자와 ^ 문자 뒤에 9 개 문자를 제거 할

그래서 문자열처럼 보일 것이다

string note = "TextEntry_Slide_7 | Not EPAD 내가 사방에 텍스트를 입력하기 위하여려고하고 하나) TextEntry_Slide_10 | 메모장이 : wrilun3q 4p9834m ggddi : (TextEntry_Slide_14 | TextEntry_Slide_16 | tnoinrgb RT 조원 N | 805585는 | 5 "

또한 그 후 나는 필요) TextEntry_Slide_10 | 메모장이 : wrilun3q 4p9834m ggddi : (TextEntry_Slide_14을 메모장 하나 내가 사방에 텍스트를 입력하기 위하여려고하고있다 | = "TextEntry_Slide_7

문자열 참고 : 문자열의 끝 떨어져 지난 9 개 문자를 제거 | TextEntry_Slide_16 | tnoinrgb rt trn n "

나는 이미 문자열 주석에 포함 된 다른 많은 것들을 제거했지만, 나는 위의 방법을 잘 못한다.

^의 색인을 찾았으니 note.IndexOf("^")과 같은 문자가 있지만 그 전에 9 문자를 제거하려면 어떻게해야할지 모르겠습니다.

어떤 도움은 매우 극명하게 될 것이다 :

+3

은 내가 포맷을 시도 – phaazon

+0

을 읽을 수 끔찍, 질문을 다시 포맷 고려하시기 바랍니다하지만 예를 들어 문자열을 추가 문자를 도입하지 않고 읽기를 떠나 너무 길다. 가능하면 요청을 설명하는 데 필요한 최소한의 방법으로 예제를 단순화 해보십시오. 또한 서식 도움말을 사용할 수 있습니다. – Guvante

+0

그게 낫지? –

답변

3

하나의 간단한 방법은 Regex.Replace(note, ".{9,9}\\^", "");

그리고 당신은 .IndexOf("^")를 사용하는 경우 마지막 9 개 문자가 note.Substring(0, note.length - 9);

+1

문자열의 시작 부분에'@'는'\\'를 사용할 수있게합니다. – Guvante

+0

모든 이스케이프 시퀀스가 ​​비활성화되므로 항상 @ 기호를 사용하는 것은 바람직하지 않습니다. 여기에 그다지 문제는 아니지만 일반적으로 이스케이프 시퀀스 (예 : 파일 경로)를 원하지 않는 형식으로 저장하려고합니다. Regex 정의에서 그것을 사용하는 것은 일반적으로 좋은 생각이 아닙니다. 더 일반적인 경우에는 실패 할 것이기 때문입니다. – Hoeloe

+0

건배 Guvante 완벽하게 작동했습니다! –

0

것이다 제거 할 수있는 확실한 방법, 당신을 해당 결과/위치를 임시 변수에 저장 한 다음 몇 가지 .Substring() 호출을 사용하여 문자열을 다시 작성할 수 있습니다. 이 문자열의 첫 번째 ^을 찾아합니다 (^ 포함) 그 전에 선두 9 개 문자를 제거합니다

int carotPos = note.IndexOf("^"); 
while (carotPos > -1) { 
    if (carotPos <= 9) { 
     note = note.Substring(carotPos); 
    } else { 
     note = note.Substring(0, (carotPos - 9)) + note.Substring(carotPos); 
    } 
    carotPos = note.IndexOf("^"); 
} 

: 같은

보십시오 뭔가. 그런 다음 문자열에서 다음 문자 ^을 찾은 다음 나머지 문자가 없어 질 때까지 반복합니다.

note = note.Substring(0, (note.Length - 9)); 
0

언어가 무엇인지, vb.net에서 내가 INSTR()를 사용하지만,이에 대한 많은 기능 확실하지 :

는 한 번 더 .Substring() 당신이 문자열에서 마지막 9 개 문자를 제거하려면 . instr은 어떤 문자열이 다른 문자열 안에 처음으로 일치 하는지를 알려주고, 문자열을 찾지 못하면 0 또는 음수를 반환합니다.

다음으로 문자열을 vb.net에서 제거하려는 경우 len() 함수와 함께 mid() 함수를 사용하여 쉽게이 작업을 수행 할 수 있습니다. len은 instr과 함께 길이를 알려주고 원하는 항목을 계산할 수 있습니다. 끈. 당신은 C#을 체크 아웃이 URL을이 일을 좋아하는 경우에

: http://www.dotnetcurry.com/ShowArticle.aspx?ID=189

1

는 물론, 당신이 필요로하는 모든은 : 캐럿의

string output = Regex.Replace(note, @".{9}\^", string.Empty); 
// remove last 9 
output = output.Remove(output.Length - 9); 
+0

답변으로도 유용하게 표시됨 –

1

먼저 스트립과 정규 표현식을 사용하여 구 개 앞의 문자 .

var stepOne = Regex.Replace(input, @".{9}\^", String.Empty); 

그런 다음 마지막 9 문자를 버립니다.

var stepTwo = stepOne.Remove(stepOne.Length - 9); 

는 그리고 당신은 아마 오류 처리를 추가해야합니다 - 예를 들어 문자열이 단계 한 후 아홉 자보다 짧은 경우.

+0

이 방법도 효과가 있지만 처음에는 Guvantes의 대답을 받아 들여야했습니다. 정보 맨을위한 건배 –