2013-11-08 4 views
1

В моей программе у меня есть длинная строка, отправленная через другую программу. Эта строка имеет длину около 100 символов, и мне нужна ее небольшая часть. Для этого мы скажем, что строка, которую я посылаю, выглядит следующим образом:Описание String.Substring

Здравствуйте, я тестовая строка. Я ужасно длинный и полный вещей, которые вы не хотите.

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

String.Substring(startPoint, Endpoint) 

Теперь в моей программе я знаю, что бит строки мне нужно использование составляет всего 38 символов с самого начала и всего 36 символов. Таким образом, мой вызов выглядит примерно так:

String.Substring(38, 36) 

И моя программа будет счастливо читать test string из приведенного выше примера.

Это не вызывает никаких проблем или ошибок при создании программы. Но когда я запускаю его, компьютер жалуется, что конечная точка не может быть ниже начальной. Дело в том, что часть сообщения, которое я хочу, отправляется.

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

String.Substring(startPoint, startPoint + 36) 

Но вернулся кучей дополнительных персонажей, которых я не нуждаюсь или хочу.

Теперь мой взгляд на этот метод заключается в том, что он работает, беря мою начальную точку, 38-й символ от начала строки, а затем идет 36 символов вдоль 38-го. Мое мнение о том, как этот метод работает неправильно?

Почему этот компьютер жалуется на проблему, но затем делает все, что я хочу?

+4

Просто деталь: второй аргумент, конечно, не конечная точка, это длина. –

+1

Ваше понимание String.Substring верно, первым параметром является смещение, второе - длина от этого смещения. Вы пробовали отлаживать его и видеть, что строка на самом деле правильная? – Tobberoth

+0

Какая именно ошибка вы получаете? – rhughes

ответ

3

Вы продолжаете говорить «конечная точка», но это длина строки. Вы правы в том, как он должен работать. Я не знаю, почему вы получаете предупреждение. Вот информация о методе.

http://msdn.microsoft.com/en-us/library/system.string.substring.aspx

ли предупреждение исходит от плагина?

2

От String.Substring Method (Int32, Int32)

Извлекает подстроку из данного экземпляра. Подстрока начинается с указанной позиции символа и имеет указанную длину.

Так что, когда вы говорите

String.Substring(startPoint, startPoint + 36) 

Это означает, что вы можете начать позицию в startPoint и принять startPoint + 36 характер после этой позиции. Не только 36 персонаж.

Если вы хотите взять 36 символов после позиции по адресу startPoint, вам просто нужно;

String.Substring(startPoint, 36) 
0

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

String yourstring=<whatevere you like>; 
String destinationstring; 
destinationstring=yourstring.Substring(38,36); 

таким образом, вы извлечь строку из полукокса 38 до 38 + 36

1

Смотреть этот учебник: http://www.dotnetperls.com/substring
Документация .NET Framework 4.5: http://msdn.microsoft.com/en-us/library/system.string.substring(v=vs.110).aspx

Синтаксис a ctually is: String.Substring(Int32 startPosition,Int32 length)
Извлекает подстроку из этого экземпляра. Подстрока начинается с заданной позиции символа и имеет указанную длину.

Другой перегружен версия String.Substring(Int32 startPosition)
Извлекает подстроку из данного экземпляра. Подстрока начинается с заданной позиции символа и продолжается до конца строки.

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