2014-01-23 4 views
1

Я делаю крошечную программу, которая должна принимать URL-адрес, который подается в текстовое поле (textBox2), , а затем позволяет пользователю добавлять определенное имя или идентификатор, который они ищут URL в другой texbox (textBox1), , то, наконец, программа должна пройти через URL-адрес, выбрать часть URL-адреса между идентификатором и «&» и скопировать его в буфер обмена.Выбор текста в строке

Это код (я положил его внутри кнопки в случае, если вы задаетесь вопросом):

string url = textBox2.Text + "&"; 

int startPos = url.LastIndexOf(textBox1.Text) + textBox1.Text.Length + 1; 
int length = url.IndexOf("&"); 
string sub = url.Substring(startPos, length); 

Clipboard.SetText(sub); 

Так сказать, я получил URL: http://www.somesite.com/John=1849282&Steve=19847274&Lenny=1234567&Craig=1432659 Тогда я набираемый в textBox1 «Steve», и поместите весь этот URL в textBox2, затем, когда я нажимаю кнопку, он должен скопировать это содержимое в буфер обмена: «19847274»

Я понял, что у него могут быть проблемы с содержанием Крейга, потому что нет «&» в конце этого, так что я сделал это новое tring, называемый «url», чтобы попытаться пройти мимо этого на данный момент.

Но когда я печатаю в Иоанна это дает мне это: 1849282 & Steve = 19847274 & Ленни = 1234567

И когда я печатаю Steve это дает мне это: 19847274 & Ленни = 1234567 & Craig = 1432659

и когда я набираю в Lenny или Craig программа перестает работать и замерзает, жалуется на это:

индекс и длина должны относиться к местоположению в пределах строки.

Имя параметра: длина

Так проблема nr.1 в том, что она копирует сверх того, что он должен, и проблема в том, что nr.2 он не добавляет, что & после содержания Крейга. Любые предложения или идеи о том, как исправить это? Или что я сделал неправильно? Есть ли лучший способ сделать это? Все советы приветствуются.

+0

Может 'Split' на имя, а затем пропустить 1 символ, чтобы получить начало числа. В этом случае вы либо заканчиваетесь на '&', либо EOS. – DonBoitnott

+0

О, хорошо, не знал этого. Спасибо, что сказал мне. =) – user1770094

+1

Вы проверили 'string.Replace'? –

ответ

1

Второй параметр подстроки - это длина строки, которую вы хотите вытащить. Не позиция последнего персонажа. Попробуйте

string url = textBox2.Text + "&"; 

int startPos = url.LastIndexOf(textBox1.Text) + textBox1.Text.Length + 1; 
string firstPartRemoved = url.Substring(startPos, url.Length - startPos); 
int locationOfAnd = firstPartRemoved.IndexOf("&"); 
string sub = firstPartRemoved.Substring(0,locationOfAnd) 

Clipboard.SetText(sub); 

Но это было бы легче грузы с регулярными выражениями

Смежные вопросы