Bash字符串处理(与Java对照) - 29. 字符串翻转_JAVA_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > JAVA > Bash字符串处理(与Java对照) - 29. 字符串翻转

Bash字符串处理(与Java对照) - 29. 字符串翻转

 2011/11/10 9:27:35  codingstandards  http://codingstandards.iteye.com  我要评论(0)
  • 摘要:Bash字符串处理(与Java对照)-29.字符串翻转(字符串反转、字符串反序)InJavaStringBuilder.reverse||StringBuffer.reverseStringBuffersb=newStringBuffer(str);Stringstr2=sb.reverse().toString();InBash编写一个Bash函数来实现字符串翻转格式:strrev"$STR"strrev(){localsrc=$1locallen=${#src
  • 标签:Bash Java 字符串

Bash字符串处理(与Java对照) - 29.字符串翻转(字符串反转、字符串反序)

In Java

StringBuilder.reverse || StringBuffer.reverse

?

StringBuffer?sb = new ?StringBuffer(str);

String?str2 = sb.reverse().toString();

?

In Bash

编写一个Bash函数来实现字符串翻转

格式:strrev "$STR"

?

strrev(){
    local src=$1
    local len=${#src}
    local i
    local dst
    for ((i=len-1; i>=0; --i)) {
        dst="$dst${src:i:1}"
    }
    echo "$dst"
}

?

[root@jfht ~]# STR=12345

[root@jfht ~]# strrev "$STR"
54321
[root@jfht ~]#

尝试一个多行文本。

[root@jfht ~]# STR="12345
> hello"
[root@jfht ~]# strrev "$STR"
olleh
54321
[root@jfht ~]#

?

使用外部命令rev来实现字符串翻转

格式:echo "$STR" | rev

格式:rev <<< "$STR"

注意:rev命令是把每行文本进行翻转。

?

man rev 写道 NAME
???? rev - reverse lines of a file

SYNOPSIS
???? rev [file]

DESCRIPTION
???? The rev utility copies the specified files to the standard output, reversing the order of characters in every
???? line.? If no files are specified, the standard input is read. ?

[root@jfht ~]# echo "12345" | rev
54321

[root@jfht ~]# rev <<<"12345"
54321

[root@jfht ~]# STR=12345
[root@jfht ~]# echo "$STR" | rev
54321
[root@jfht ~]# rev <<< "$STR"
54321
[root@jfht ~]#

尝试一个多行文本。

[root@jfht ~]# STR="12345
> hello"
[root@jfht ~]# strrev "$STR"
olleh
54321
[root@jfht ~]# echo "$STR" | rev
54321
olleh
[root@jfht ~]# rev <<<"$STR"
54321
olleh
[root@jfht ~]#

?

使用rev和tac命令实现字符串翻转

格式:echo "$STR" | tac | rev

格式:echo "$STR" | rev | tac

?

man tac 写道 NAME
?????? tac - concatenate and print files in reverse

SYNOPSIS
?????? tac [OPTION]... [FILE]...

DESCRIPTION
?????? Write each FILE to standard output, last line first.? With no FILE, or when FILE is -, read standard input.
?

[root@jfht ~]# STR="12345
> hello"
[root@jfht ~]# echo "$STR" | tac | rev
olleh
54321
[root@jfht ~]# echo "$STR" | rev | tac
olleh
54321
[root@jfht ~]#

?

使用awk命令实现字符串翻转

格式:echo "$STR" | awk -F "" '{for(i=NF;i>0;i--)print $i}'

格式:awk -F "" '{for(i=NF;i>0;i--)print $i}' <<<"$STR"

?

?

使用sed命令实现字符串翻转

# 将行中的字符逆序排列,第一个字成为最后一字,……(模拟“rev”)

来自:http://bbs.chinaunix.net/viewthread.php?tid=859821&extra=&page=1

格式:echo "$STR" | sed '/\n/!G;s/\(.\)\(.*\n\)/&\2\1/;//D;s/.//'

格式:sed '/\n/!G;s/\(.\)\(.*\n\)/&\2\1/;//D;s/.//' <<<"$STR"

?

[root@jfht ~]# echo "12345" | sed '/\n/!G;s/\(.\)\(.*\n\)/&\2\1/;//D;s/.//'
54321
[root@jfht ~]# STR=12345
[root@jfht ~]# echo "$STR" | sed '/\n/!G;s/\(.\)\(.*\n\)/&\2\1/;//D;s/.//'
54321
[root@jfht ~]# STR="12345
> hello"
[root@jfht ~]# echo "$STR" | sed '/\n/!G;s/\(.\)\(.*\n\)/&\2\1/;//D;s/.//'
54321
olleh
[root@jfht ~]# sed '/\n/!G;s/\(.\)\(.*\n\)/&\2\1/;//D;s/.//' <<<"$STR"
54321
olleh
[root@jfht ~]#

?

?

本文链接:http://codingstandards.iteye.com/blog/1164916 ? (转载请注明出处)

返回目录:Java程序员的Bash实用指南系列之字符串处理(目录)?

上节内容:Bash字符串处理(与Java对照) - 28.去除前后空白

下节内容:Bash字符串处理(与Java对照) - 30.综合实例:自动生成版本号源文件

?

发表评论
用户名: 匿名