reverse the order of characters in a string

后端 未结 13 1052
逝去的感伤
逝去的感伤 2020-12-04 15:03

In string \"12345\", out string \"54321\". Preferably without third party tools and regex.

13条回答
  •  生来不讨喜
    2020-12-04 15:48

    A bash solution improving over @osdyng answer (my edit was not accepted):

    var="12345"     rev=""
    
    for(( i=0 ; i<${#var} ; i++ )); do rev="${var:i:1}$rev"; done
    
    echo "var: $var, rev: $rev"
    

    Or an even simpler (bash) loop:

    var=$1   len="${#var}"   i=0   rev=""
    
    while (( i

    A POSIX solution:

    var="12345"     rev=""    i=1
    
    while  [ "$i" -le "${#var}" ]
    do     rev="$(echo "$var" | awk -v i="$i" '{print(substr($0,i,1))}')$rev"
           : $(( i+=1 ))
    done
    
    echo "var: $var, rev: $rev"
    

    Note: This works on multi byte strings. Cut solutions will work only in ASCII (1 byte) strings.

提交回复
热议问题