- 浏览: 4754207 次
- 性别:
- 来自: 上海
文章分类
最新评论
-
bzhao:
你也应该可以这样:(not tested)./rbtunnel ...
在Bash脚本中怎么关闭文件描述符? -
bzhao:
如果有A进程原代码情况下,通过如下调用,把他的子进程继承关闭则 ...
在Bash脚本中怎么关闭文件描述符? -
Master-Gao:
楼主咋没分析下源码呢?
我使用过的Linux命令之dirname - 截取给定路径的目录部分 -
jiedushi:
tail -F 就可以吧
Linux下实时跟踪log4j日志文件的bash脚本 - 增强了tail -f的功能 -
java_is_new:
新手学习了,就是不明白为一个网卡配多个ip有什么用
我使用过的Linux命令之ifconfig - 网络配置命令
Bash字符串处理(与Java对照) - 13.字符串数组连接(以指定分隔符合并)
In Java
以指定的分隔符将字符串数组连接成一个字符串的源码
以下代码来自:http://www.oschina.net/code/explore/jsoup-1.4.1/helper/StringUtil.java
/*** * Join a collection of strings by a seperator * @param strings collection of string objects * @param sep string to place between strings * @return joined string */ public static String join(Collection<String> strings, String sep) { return join(strings.iterator(), sep); } /*** * Join a collection of strings by a seperator * @param strings iterator of string objects * @param sep string to place between strings * @return joined string */ public static String join(Iterator<String> strings, String sep) { if (!strings.hasNext()) return ""; String start = strings.next(); if (!strings.hasNext()) // only one, avoid builder return start; StringBuilder sb = new StringBuilder(64).append(start); while (strings.hasNext()) { sb.append(sep); sb.append(strings.next()); } return sb.toString(); }
StringUtils.join
提供了九种join方法
Joins the elements of the provided Collection into a single String containing the provided elements.
static String join(Collection collection, String separator)
Joins the elements of the provided Collection into a single String containing the provided elements.
static String join(Iterator iterator, char separator)
Joins the elements of the provided Iterator into a single String containing the provided elements.
static String join(Iterator iterator, String separator)
Joins the elements of the provided Iterator into a single String containing the provided elements.
static String join(Object[] array)
Joins the elements of the provided array into a single String containing the provided list of elements.
static String join(Object[] array, char separator)
Joins the elements of the provided array into a single String containing the provided list of elements.
static String join(Object[] array, char separator, int startIndex, int endIndex)
Joins the elements of the provided array into a single String containing the provided list of elements.
static String join(Object[] array, String separator)
Joins the elements of the provided array into a single String containing the provided list of elements.
static String join(Object[] array, String separator, int startIndex, int endIndex)
Joins the elements of the provided array into a single String containing the provided list of elements.
In Bash
将数组中的字符串合并。
数组的定义方式如下:
ARR=(S1 S2 S3)
以空格分隔
格式1:STR=${ARR[*])
格式2:STR=${ARR[@])
格式3:STR="${ARR[*]}"
格式4:STR="${ARR[@]}"
[root@jfht ~]# ARR=(S1 S2 S3)
[root@jfht ~]# echo "${ARR[*]}"
S1 S2 S3
[root@jfht ~]# echo "${ARR[@]}"
S1 S2 S3
[root@jfht ~]#
不分隔
str_join() {
local dst
for s in "$@"
do
dst=${dst}${s}
done
echo "$dst"
}
错误:str_join "$ARR[@]"
错误:str_join $ARR[@]
错误:str_join "$ARR[*]"
错误:str_join $ARR[*]
[root@jfht ~]# declare -f str_join
str_join ()
{
local dst;
for s in "$@";
do
dst=${dst}${s};
done;
echo "$dst"
}
[root@jfht ~]# ARR=(yes no 'hello world')
[root@jfht ~]# str_join ${ARR[*]}
yesnohelloworld
[root@jfht ~]# str_join ${ARR[@]}
yesnohelloworld
[root@jfht ~]# str_join "${ARR[*]}"
yes no hello world
[root@jfht ~]# str_join "${ARR[@]}"
yesnohello world
[root@jfht ~]#
以指定分隔符来分隔
实现方式一
str_join_sep ()
{
local sep="$1"
shift
local dst
for s in "$@"
do
if [ "$dst" ]; then
dst=${dst}${sep}${s}
else
dst=${s}
fi
done
echo "$dst"
}
正确:str_join_sep "$SEP" "$ARR[@]"
注意双引号的使用。
[root@jfht ~]# declare -f str_join_sep
str_join_sep ()
{
local sep="$1";
shift;
local dst;
for s in "$@";
do
if [ "$dst" ]; then
dst=${dst}${sep}${s};
else
dst=${s};
fi;
done;
echo "$dst"
}
[root@jfht ~]# ARR=(yes no 'hello world')
[root@jfht ~]# SEP=,
[root@jfht ~]# str_join_sep "$SEP" "${ARR[@]}"
yes,no,hello world
[root@jfht ~]#
实现方式二
str_join_sep ()
{
local sep="$1"
shift
local dst="$1"
shift
for s in "$@"
do
dst=${dst}${sep}${s}
done
echo "$dst"
}
[root@jfht ~]# declare -f str_join_sep
str_join_sep ()
{
local sep="$1";
shift;
local dst="$1";
shift;
for s in "$@";
do
dst=${dst}${sep}${s};
done;
echo "$dst"
}
[root@jfht ~]# ARR=(yes no 'hello world')
[root@jfht ~]# SEP=,
[root@jfht ~]# str_join_sep "$SEP" "${ARR[@]}"
yes,no,hello world
[root@jfht ~]# SEP=:
[root@jfht ~]# str_join_sep "$SEP" "${ARR[@]}"
yes:no:hello world
[root@jfht ~]# SEP='|'
注意加上单引号,否则Bash认为是管道线。
[root@jfht ~]# str_join_sep "$SEP" "${ARR[@]}"
yes|no|hello world
[root@jfht ~]#
本文链接:http://codingstandards.iteye.com/blog/1180348 (转载请注明出处)
返回目录:Java程序员的Bash实用指南系列之字符串处理(目录)
上节内容:Bash字符串处理(与Java对照) - 12.字符串连接
下节内容:Bash字符串处理(与Java对照) - 14.判断是否包含另外的字符串(多达6种方法)
发表评论
-
Bash字符串处理(与Java对照) - 22.判断字符串是否数字串
2011-10-25 09:25 5502Bash字符串处理(与Java对照) - 22.判断字符串是否 ... -
Bash字符串处理(与Java对照) - 21.字符串正则匹配
2011-10-24 09:07 11075Bash字符串处理(与Java对照) - 21.字符串正则匹配 ... -
Bash字符串处理(与Java对照) - 20.查找子串的位置
2011-10-19 09:14 6844Bash字符串处理(与Java对照) - 20.查找子串的位置 ... -
Bash字符串处理(与Java对照) - 19.查找字符的位置
2011-10-18 09:06 5955Bash字符串处理(与Java对照) - 19.查找字符的位置 ... -
Bash字符串处理(与Java对照) - 18.格式化字符串
2011-10-17 09:18 5018Bash字符串处理(与Java对照) - 18.格式化字符串 ... -
Bash字符串处理(与Java对照) - 17.判断是否以另外的字符串结尾
2011-10-09 08:58 6998Bash字符串处理(与Java对照) - 17.判断是否以另外 ... -
Bash字符串处理(与Java对照) - 16.判断是否以另外的字符串开头
2011-10-08 09:17 8419Bash字符串处理(与Java对照) - 16.判断是否以另外 ... -
Bash字符串处理(与Java对照) - 15.计算子串出现的次数
2011-09-28 09:37 3434Bash字符串处理(与Java对照) - 15.计算子串出现的 ... -
Bash字符串处理(与Java对照) - 14.判断是否包含另外的字符串(多达6种方法)
2011-09-27 13:22 8357Bash字符串处理(与Java对照) - 14.判断是否包含另 ... -
Bash字符串处理(与Java对照) - 12.字符串连接
2011-09-23 09:08 6373Bash字符串处理(与Java对照) - 12.字符串连接 ... -
Bash字符串处理(与Java对照) - 11.比较两个字符串大小(字典顺序、数值比较)
2011-09-21 09:31 5733Bash字符串处理(与Java对照) - 11.比较两个字符串 ... -
Bash字符串处理(与Java对照) - 10.判断两个字符串是否相等(不等)
2011-09-20 09:16 6935Bash字符串处理(与Java对照) - 10.判断两个字符串 ... -
Bash字符串处理(与Java对照) - 9.获取字符串指定位置的字符、遍历字符串中的字符
2011-09-19 09:13 3755Bash字符串处理(与Java对照) - 9.获取字符串指定位 ... -
Bash字符串处理(与Java对照) - 8.计算字符串长度
2011-09-16 09:20 5689Bash字符串处理(与Java对照) - 8.计算字符串长度 ... -
Bash字符串处理(与Java对照) - 7.字符串与默认值
2011-09-15 09:20 3971Bash字符串处理(与Java对照) - 7.字符串与默认值 ... -
Bash字符串处理(与Java对照) - 6.判断字符串是否为空(不为空)
2011-09-14 09:20 7234Bash字符串处理(与Java对照) - 6.判断字符串是否为 ... -
Bash字符串处理(与Java对照) - 5.字符串输入(读取字符串)
2011-09-13 09:28 3958Bash字符串处理(与Java对照) - 5.字符串输入(读取 ... -
Bash字符串处理(与Java对照) - 4.字符串输出
2011-09-08 09:30 3771Bash字符串处理(与Java对照) - 4.字符串输出 I ... -
Bash字符串处理(与Java对照) - 3.给(字符串)变量赋值
2011-09-07 09:29 6909Bash字符串处理(与Java ... -
Bash字符串处理(与Java对照) - 2.字符串的表示方式(字符串常量)
2011-09-06 09:18 6166Bash字符串处理(与Java ...
相关推荐
MySQL Connector/J是MySQL数据库与Java应用程序之间的桥梁,它是一个实现了JDBC(Java Database Connectivity)标准的MySQL驱动程序。"mysql-connector-java-5.1.40.tar.gz" 是这个驱动程序的一个特定版本,版本号为...
bash-3.1-MSYS-1.0.11-snapshot.tar.bz2 ffmpeg 安装用包!
在上述命令中,`--connect`参数指定了MySQL的JDBC连接字符串,而Sqoop会自动使用MySQL Connector/J执行数据迁移。 综上所述,MySQL Connector/J 8.0.13是Java开发者与MySQL数据库交互的关键组件,它为Java应用程序...
安装完成后,libaio-devel 提供的头文件(如 `libaio.h`)和开发库将可供编译时链接使用,使得 Oracle 安装脚本能够正确识别并使用这个关键的异步 I/O 支持。 总之,libaio-devel-0.3.106 对于成功安装和运行 ...
5. **文本块(Text Blocks)**:预览特性,允许在代码中方便地插入多行字符串,减少转义字符的使用。 在下载和安装Java JDK 11.0.8之后,开发者可以使用`javac`编译Java源代码,生成字节码(`.class`文件)。通过`...
在Linux系统中,字体管理是实现正确显示各种字符集,包括中文字符,的关键部分。`fontconfig`是一个开源的字体配置库,它负责管理和查找系统中的字体,为应用程序提供统一的接口来处理字体问题。在没有互联网连接...
修复redhat6 bash远程执行任意代码漏洞CVE-2014-6271
然后将解压后的目录移动到一个合适的位置,如`/usr/lib/jvm`,并创建符号链接以设置系统默认的Java版本: ```bash sudo mv jdk-11.0.16.1 /usr/lib/jvm/ sudo update-alternatives --install /usr/bin/java java /...
9.2. 操作字符串 9.3. 参数替换 9.4. 指定类型的变量:declare 或者typeset 9.5. 变量的间接引用 9.6. $RANDOM: 产生随机整数 9.7. 双圆括号结构 10. 循环和分支 10.1. 循环 10.2. 嵌套循环 10.3. 循环控制 10.4. ...
通过在命令行中调用这个编译器,开发者可以指定.proto文件,并选择生成Java、C++或Python等语言的代码。例如,如果你有一个名为`myproto.proto`的文件,你可以使用以下命令生成Java代码: ```bash protoc --java_...
《TFTP服务器在RHEL5系统中的应用与配置详解》 TFTP(Trivial File Transfer Protocol,简单文件传输协议)是一种轻量级的文件传输协议,常用于设备初始化、固件更新、网络诊断等场景。在RHEL5(Red Hat Enterprise...
总的来说,rlwrap提供了一种更高效、更易用的方式来与sqlplus交互,尤其是在处理字符编码问题时。对于需要频繁使用sqlplus的数据库管理员和开发者来说,rlwrap是一个非常实用的工具。通过正确配置和使用rlwrap,可以...
在编写Makefile时,确保指定正确的编译器和链接器。 注意,交叉编译过程中可能会遇到各种问题,如库的版本不匹配、依赖缺失等,需要根据具体错误信息进行解决。同时,不同的目标硬件可能需要不同的编译选项,因此在...
尽管Tomcat不是完整的Java EE应用服务器,但它与Java EE的其他组件(如EJB)可以通过与其他服务器(如JBoss或Glassfish)集成来支持。 **Linux系统**: Linux是一种自由和开放源代码的操作系统,广泛应用于服务器...
高级bash编程 高级Bash脚本编程指南(一) 目录 ++++ 第一部分. 热身 1. 为什么使用shell编程 2. 带着一个Sha-Bang出发(Sha-Bang指的是#!) 2.1. 调用一个脚本 2.2. 初步的练习 第二部分. 基本 3. 特殊...
`fonts-ISO8859-2-75dpi-1.0-17.1.noarch.rpm` 包含的是针对ISO 8859-2字符集的字体,这是一个广泛使用的西欧语言字符编码标准,涵盖了波兰语、匈牙利语等中欧语言的字符。75dpi(dots per inch)代表了字体的分辨率...
此外,numpy还提供了广播功能,可以自动扩展单维度数组以匹配多维度数组的形状,进行高效的数组间运算。 numpy-1.26.4是numpy的稳定版本,包含了对之前版本的改进和错误修复。在这个版本中,用户可以期待更加稳定和...
4. **文本块(Text Blocks)**:新语法特性,用于处理多行字符串,减少转义字符的使用,提高代码可读性。 5. **改进的垃圾收集器**:包括ZGC(Z Garbage Collector)和Shenandoah,提供了更低的暂停时间,适合大...
5. **文本块(Text Blocks)**:Java 11引入了文本块(多行字符串字面量)的预览特性,允许程序员方便地处理多行文本,减少字符串连接操作和转义字符的使用。 6. **其他语言特性和API增强**:包括对TLS协议的更新、...
5. **强类型字符串连接(JEP 359)**:增强了字符串连接操作的性能,使得在连接字符串时无需创建额外的StringBuilder实例。 6. **删除Java EE和Corba模块(JEP 320)**:移除了不再维护的Java EE和Corba相关模块,...