Le 24/08/2021 à 15:09, Mike Jonkmans écrivait :
This seems to be the fastest:
f12 () { [[ "$1" =~ ${1//?/(.)} ]]; local arr=( "${BASH_REMATCH[@]:1}" ); }
time for ((i=1; i<=10000; i++)); do f0 682390; done
real    0m0,296s
user    0m0,296s
sys     0m0,000s

Awesome Mike, would you like to add this answer to SO?

It would be very useful there; but I don't want to be wrongly credited for this smart implementation.

time for ((i=1; i<=10000; i++)); do f12 682390; done

real    0m0.223s
user    0m0.223s
sys     0m0.000s

Made it into a fancy utility function:

string2array() {
  # Splits the string's characters into the array
  # $1: The input string
  # $2: The output array name
  [[ "$1" =~ ${1//?/(.)} ]]
  # shellcheck disable=SC2178 # shellcheck broken nameref type check
  local -n arr="$2"
  # shellcheck disable=SC2034 # shellcheck broken nameref usage check
  arr=("${BASH_REMATCH[@]:1}")
}


--
Léa Gris


Reply via email to