텍스트 파일을 살펴보고 문자열의 특정 부분을 제거하고 싶습니다. 이 경우 경로를 제거하고 싶습니다.
PERFORMER "Charles Lloyd"
TITLE "Mirror"
FILE "Charles Lloyd\[2010] Mirror\01. I Fall In Love Too Easily.wav" WAVE
TRACK 01 AUDIO
FILE "Charles Lloyd\[2010] Mirror\02. Go Down Moses.wav" WAVE
...에
PERFORMER "Charles Lloyd"
TITLE "Mirror"
FILE "01. I Fall In Love Too Easily.wav" WAVE //here are the changes
TRACK 01 AUDIO
FILE "02. Go Down Moses.wav" WAVE //here are the changes
나는 다음과 같은 것을 시도했다 : (전체 텍스트를 포함하는 문자열 s)
s = s.Remove(s.IndexOf("FILE") + 5, (s.IndexOf("\\") + 1) - s.IndexOf("FILE") - 5);
이 기능을 반복하여 "FILE" "과 다음 백 슬래시 사이의 부분을 제거하십시오.
부품을 올바르게 제거하지만이 기능을 실행해야하는 횟수를 수동으로 조정해야합니다 (한 줄에 백 슬래시마다 한 번씩 실행). 하지만이 알고리즘은 유연성이 부족하고 "FILE"로 시작하는 다음 줄에 접근하고 절차를 다시 시작하는 방법을 모르겠습니다.
모든 텍스트가 하나의 문자열 변수 인 경우 먼저 분할하고 모든 문자열을 대체하고 다시 결합 할 수 있습니다 (텍스트가 변수라고 가정 lines
).
var strings = lines.Split(new[] { Environment.NewLine }, StringSplitOptions.None);
var replacedStrings = new List<string>();
foreach (var s in strings)
{
string replaced;
if (s.StartsWith("FILE"))
{
var sWithoutFile = s.Substring(5);
replaced = s.Substring(0, 6) +
sWithoutFile.Substring(sWithoutFile.LastIndexOf("\\") + 1);
}
else
{
replaced = s;
}
replacedStrings.Add(replaced);
}
var result = string.Join(Environment.NewLine, replacedStrings);
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다