C # String Manipulation - От: Hello.Test.Trash до Hello.Test - PullRequest
0 голосов
/ 30 января 2012

У меня есть строка типа:

  • "Hello.Test.Trash"

или "Hello.Test.Computer.Trash"

или "Haha.Yeah.Space.Car.Trash"

Я хочу быть в состоянии удалить последнее слово « Trash », которое всегда совпадает с предыдущей точкой:

"Hello.Test"

"Hello.Test.Computer"

"Hello.Yeah.Space.Car"

Какой самый лучший / самый чистый способ сделать это

Ответы [ 4 ]

4 голосов
/ 30 января 2012

Если у вас есть только один экземпляр '.Trash' в конце:

string value = "Hello.Test.Trash";
string notrash = value.Replace(".Trash","");
// notrash = "Hello.Test"

Если '.Trash' также может быть в середине строки, и вы не хотите заменятьчто:

string value = "Hello.Trash.Test.Trash";
string notrash = Regex.Replace(value, @"\.Trash$", "");
// notrash = "Hello.Trash.Test"
3 голосов
/ 30 января 2012
myString = myString.Substring(0,myString.Length - "Trash".Length)

Я был бы очень осторожен, используя замену, так как это заменило бы мусор в этой строке дважды:

I.trash.in.trash

get you "I.in«

3 голосов
/ 30 января 2012

Для удаления всех экземпляров .Trash (в том числе в середине)

var resultString = inputString.Replace(".Trash", String.Empty);

Если вы на 100% уверены, что последним набором символов будет ".Trash", и вы хотите удалить только последнее его появление, вы также можете использовать

var resultString = inputString.SubString(0, inputString.Lenght - 6); //6 is lenght of .Trash
1 голос
/ 30 января 2012

Если .Trash встречается в вашей строке только один раз, у вас есть две опции:

string s = "Hello.Test.Trash";

string s1 = s.Replace(".Trash", string.Empty);

string s2 = s.Remove(s.IndexOf(".Trash"));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...