2016-04-28 2 views
0

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

12 312323.3 
013.43.9 
3.23.14353.55 WHATEVER 345.193 
728937.3 
87.3 ojojo 23.434blabla 24.424.7 

Что мне нужно сделать, это увеличение числа после последней точки так просто сделать + 1.

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

вот мой текущий код:

Dim inputValue as String = "34.234234.6.12" 
'--Get Last char from string and add 1 to it 
Dim lastChar As String = CInt(CStr(inputValue.Last)) + 1 
'--Remove last char and add lastChar 
Dim nextCombinNummer As String = lastValue.Nummer.Substring(0, lastValue.Nummer.Length - 1) & lastChar 
      Return nextCombinNummer 

Я думаю, что проблема lastValue.Last + 1, как он будет принимать только одну цифру, а также, когда я удалить с помощью подстроки последнюю цифру, но будет удален только 2 ,

Можете ли вы мне помочь? Как всегда брать число после последней точки из строки, а затем увеличивать это число на 1 и возвращать новый полный номер?

EDIT:

Я думаю, что я могу получить и увеличить количество, но еще не знаете, как снять и поставить его в конце:

Думаю, что это нормально:

Dim inputValue as String = "34.234234.6.12" 
Dim number As String = inputValue .Substring(inputValue .LastIndexOf("."c) + 1)                 
Dim numberIncreased as integer = CInt(number) + 1 

'Как это сделать правильно? :

Dim nextCombinNummer As String = lastValue.Nummer.Substring(0, lastValue.Nummer.Length - 1) & numberIncreased 
+1

Можно ли увидеть класс для объекта 'lastValue'? –

+0

его просто inputValue * исправлено –

ответ

0

Простое решение является приведение в Integer последняя часть строки, добавьте, перекомпонуйте строку :

'Original Value 
Dim val As String = "123.456.789" 
'We take only the last part and add one 
Dim nb = Integer.Parse(val.Substring(val.LastIndexOf(".") + 1)) + 1 
'We recompose the string 
Dim FinalVal As String = val.Substring(0, val.LastIndexOf(".") + 1) & nb.ToString() 
+0

спасибо, что им плохо –

0

Я хотел бы использовать следующее, который использует String.Split, Int32.TryParse и String.Join:

Dim numbers As New List(Of String) From {"12.312323.3", "013.43.9", "3.231435355345.193", "728937.3", "87.323.43424.424.7"} 

for i As Int32 = 0 To numbers.Count -1 
    Dim num = numbers(i) 
    Dim token = num.Split("."c) 
    dim lastNum = token.Last() ' or token(token.Length-1) 
    Dim n As Int32 
    If int32.TryParse(lastNum, n) 
     n += 1 
     token(token.Length-1) = n.ToString() 
    End If 
    numbers(i) = string.Join(".", token) 
Next 
+0

Благодарим вас за создание этого, но я думаю, что использую более короткую версию superPeaunt. Thx Tim –

+0

Несомненно. Но короче не всегда лучше. Например, если вы хотите обрабатывать неверные данные. –

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