Звучит так, будто вы делаете много работы, манипулируя строкой, которая вызывает у вас ошибки. Я думаю, что было бы легче пойти с Regex
, чтобы решить эту проблему.
Попробуйте этот код:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
' Copy string to format from clipboard
Dim strClipText As String = Clipboard.GetText
Dim regex = New Regex("-{0,1}\d+(\.\d+|)")
Dim latlon = String.Join(" ", regex.Matches(strClipText).OfType(Of Match)().Select(Function(m) m.Value))
Clipboard.Clear()
My.Computer.Clipboard.SetText(latlon)
End Sub
если Вы используете разрезание [-1:], возвращенный список является мелкой копией, не ссылкой. таким образом [-1:] [0] изменяет новый список. [len (список)-1] является ссылкой для длительности объекта.
list[-1:]
создает новый список. Получить то же поведение как list[len(list)-1]
это должно было бы возвратить представление некоторого list
, но поскольку я сказал, это создает новый временный список. Вы затем продолжаете редактировать временный список.
Так или иначе Вы знаете, что можно использовать list[-1]
для того же самого, правильно?
Разрезание создает копию (мелкая копия). Это часто используется в качестве мелкой идиомы копии.
т.е.
list2 = list1[:]
эквивалентно
import copy
list2 = copy.copy(list1)