vb.net - Get next string following array of char -


i have array of chars, random except every character occurs @ once.

i have string containing characters present in array. want string "counted upwards" (if makes sense), "111" becomes "112", or "aaa" becomes "aab".

let´s array of chars contains 1, 2, , 3. example above works, when string "333" (should become "1111"), function returns empty - or wrong - string.

if call function again, providing wrong string, after few times returns correct value ("1111").

why happen?

this function:

public function getnextstring(byval currentstr string, byval pattern() char) string      'currentstr string want count upwards, pattern() array of chars      dim nextstr string = ""      dim currentstrarray() char = currentstr.tochararray     dim currenstrposition integer = currentstrarray.length - 1      dim finished boolean = false     until finished = true         dim newposition integer = getpositioninarray(currentstrarray(currentstrposition)) 'this custom function, should self-explaining         if newposition = nothing return nothing         newposition += 1          try             currentstrarray(currenstrposition) = pattern(newposition)             finished = true         catch ex indexoutofrangeexception             currentstrarray(currentstrposition) = pattern(0)             currentstrposition -= 1         end try          if currentstrposition < 0             nextstr = pattern(0)             finished = true         end if     loop      integer = 0 currentstrarray.length - 1         nextstr = nextstr & currentstrarray(i)     next      return nextstr end function 

any ideas?

edit:

as example, have array {"1","2","3"}. string first "111". want test these strings hashsums. after testing string, need next string, "112". then, "113", "121", "122", , on. when string reaches "333" , string not 1 i'm looking for, no string 3 characters (all 3-character-combinations possible array have been tried). need start again using 4 characters. that´s why "333" supposed become "1111". hope helps.

edit #2:

i found error. redimensioned array incorrectly, last index empty. made strings weird. thank working solutions, have day!

well, convert number, add 1 , convert string.

convert string number:

function convertstringtonumber(input string, pattern char()) integer     dim number integer = 0     dim chardigits = pattern.tolist()     dim numberbase = chardigits.count     var = 0 input.length - 1         dim digit = chardigits.indexof(input(input.length - 1 - i))         if digit <> -1             number += digit * cint(math.pow(numberbase, i))         end if     next     return number end function 

convert number string:

function convertnumbertostring(number integer, pattern char()) string     dim chardigits = pattern.tolist()     dim numberbase = chardigits.count     dim buffer = new stack(of char)()     'var j = buffer.length;     while number > 0         buffer.push(chardigits(number mod numberbase))         number = number / numberbase     end while     dim sb = new stringbuilder()     while buffer.count > 0         sb.append(buffer.pop())     end while      return sb.tostring() end function 

now have conversion functions, have this:

function getnextstring(byval currentstr string, byval pattern() char) string     dim number = convertstringtonumber(currentstr, pattern)     number += 1     return convertnumbertostring(number, pattern) end function 

Comments

Popular posts from this blog

php - Wordpress website dashboard page or post editor content is not showing but front end data is showing properly -

How to get the ip address of VM and use it to configure SSH connection dynamically in Ansible -

javascript - Get parameter of GET request -