developer tip

문자열에서 마지막 단어 바꾸기-C #

copycodes 2020. 10. 23. 08:01
반응형

문자열에서 마지막 단어 바꾸기-C #


문자열에서 단어의 마지막 항목을 바꿔야하는 문제가 있습니다.

상황 : 다음 형식의 문자열이 제공됩니다.

string filePath ="F:/jan11/MFrame/Templates/feb11";

그런 다음 다음 TnaName과 같이 바꿉니다.

filePath = filePath.Replace(TnaName, ""); // feb11 is TnaName

이것은 작동하지만 때 나는 문제가 TnaName내와 동일합니다 folder name. 이런 일이 발생하면 다음과 같은 문자열을 얻게됩니다.

F:/feb11/MFrame/Templates/feb11

지금은 모두 발생 대체하고 TnaName과를 feb11. 내 문자열에서 마지막 단어 만 바꿀 수있는 방법이 있습니까?

참고 : feb11TnaName- 문제가되지 않습니다 다른 프로세스에서 유래한다.


다음은 문자열의 마지막 발생을 대체하는 함수입니다.

public static string ReplaceLastOccurrence(string Source, string Find, string Replace)
{
        int place = Source.LastIndexOf(Find);

        if(place == -1)
           return Source;

        string result = Source.Remove(place, Find.Length).Insert(place, Replace);
        return result;
}
  • Source 작업을 수행 할 문자열입니다.
  • Find 바꿀 문자열입니다.
  • Replace 바꿀 문자열입니다.

을 사용 string.LastIndexOf()하여 문자열의 마지막 발생 인덱스를 찾은 다음 하위 문자열을 사용하여 솔루션을 찾습니다.


수동으로 교체해야합니다.

int i = filePath.LastIndexOf(TnaName);
if (i >= 0)
    filePath = filePath.Substring(0, i) + filePath.Substring(i + TnaName.Length);

Regex를 사용할 수없는 이유를 모르겠습니다.

public static string RegexReplace(this string source, string pattern, string replacement)
{
  return Regex.Replace(source,pattern, replacement);
}

public static string ReplaceEnd(this string source, string value, string replacement)
{
  return RegexReplace(source, $"{value}$", replacement);
}

public static string RemoveEnd(this string source, string value)
{
  return ReplaceEnd(source, value, string.Empty);
}

용법:

string filePath ="F:/feb11/MFrame/Templates/feb11";
filePath = filePath.RemoveEnd("feb11"); // F:/feb11/MFrame/Templates/
filePath = filePath.ReplaceEnd("feb11","jan11"); // F:/feb11/MFrame/Templates/jan11

네임 스페이스 Path클래스를 사용할 수 있습니다 System.IO.

string filePath = "F:/jan11/MFrame/Templates/feb11";

Console.WriteLine(System.IO.Path.GetDirectoryName(filePath));

참고 URL : https://stackoverflow.com/questions/14825949/replace-the-last-occurrence-of-a-word-in-a-string-c-sharp

반응형