2013-05-16 4 views
0

C# вопрос: мне нужно искать назад на строку, используя LastIndexOf() Строка в вопросе «Южная Дакота 1040» Нужно разделить имя состояния от показателя 1040 системы. Я могу получить «1040» часть строки сам по себе, но не могу получить имя состояния сам по себе. Нужно идти назад, так как в строке есть два пробела. Есть ли лучший способ сделать это, чем то, на что я смотрю?LastIndexOf() метод

+0

Да, ** регулярное выражение **. У вашей строки ввода есть шаблон, например [state name] [space] [number]? –

+0

", но не может получить имя состояния само по себе", что вы имеете в виду? почему бы не 'myString.Substring (0, myString.LastIndexOf (''))'? –

+0

Попробуйте следующее: http: //stackoverflow.com/questions/7945531/remove-last-element-from-array – Sparky

ответ

-1

Не обращаясь к CodeFreak, логика заключается в том, чтобы урезать вашу строку в строке foreach и concatenate, найденной в ячейке/списке, большей, чем позиция [0]/[1]. Этого будет достаточно для вас?

2

Используйте LastIndexOf, чтобы получить последнее пространство. Затем разделите строку на две части, вы можете сделать это, используя метод SubString.

str.SubString(0, str.LastIndexOf(' ')); //this gets you "South Dakota" 

Обязательно обрабатывать, когда LastIndexOf возвращается -1.

+0

+1 при обработке -1. –

+0

Thx, это то, что я искал. –

0
var test = "South Dakota 1040"; 

var state = test.Remove(test.LastIndexOf(" ")); 
-1
string replaceContent = "1040"; 
string content = "South Dakota 1040"; 
string result = content.Replace(replaceContent, "").Trim(); 
+0

OP не совсем ясна, но я думаю, что цель состоит в том, чтобы избавиться от всего после последнего пробела. –

1

Есть много способов кожи кошки в разработке программного обеспечения (обратите внимание, у меня нет никаких дурных чувств по отношению к кошкам или любому другому виду животный) :) из них будут работать, я предпочитаю регулярные выражения вариантов, если у вас есть конкретный образец, на который вы можете ориентироваться, но это только я :)

// our string 
string x = "South Dakota 1040"; 

x.Substring(0, x.LastIndexOf(' ')); 
// this basically does the same as above, but removes anything with a space and numbers 
Regex.Replace(x, @"\s\d+", string.Empty); 
// this is simmilar to regex above, though you have to watch out for no match cases 
Regex.Match(x, @".*?(?=\s\d+)").Value; 
Смежные вопросы