如何将字符串转换为N个字符数组并转换回带空格的字符串? 以及如何删除空格?
例如123456789成2的应该给12 34 56 78 9
答案 0 :(得分:3)
听起来像根本不需要数组,而最终目标只是在两个字符的组之间插入空格。如果是这样,您可以使用
sed 's/../& /g' <<< "your string here"
这会将示例输入123456789
转换为预期的输出12 34 56 78 9
。
当然,您可以像往常一样将结果分配给变量:
yourVariable="$(sed 's/../& /g' <<< "your string here")"
如果需要,我们如何删除空格?
我不确定您是指哪个空格。如果您要说的是最终结果,那么使用原始输入而不是再次处理输出会更容易吗?
无论如何,您可以使用tr -d ' ' <<< "your string"
或参数替换${yourVariable// /}
从任何字符串中删除所有空格。
答案 1 :(得分:3)
$ str='123456789'
$ arr=( $(printf '%s\n' "$str" | sed 's/../& /g') )
$ declare -p arr
declare -a arr=([0]="12" [1]="34" [2]="56" [3]="78" [4]="9")
$ str="${arr[*]}"
$ echo "$str"
12 34 56 78 9
$ str="${str// }"
$ echo "$str"
123456789
$ str=$(printf "%s" "${arr[@]}")
$ echo "$str"
123456789
答案 2 :(得分:2)
这将说明您的问题。
将字符串转换为N个字符数组:
string="0123456789abcdefghijklmnopqrstuvwxyz"
number_max_of_char_per_set=4
increment_by=$number_max_of_char_per_set
for i in `seq 0 $increment_by ${#string}`
#for i in $(seq 0 ${#string})
do array[$i]=${string:$i:number_max_of_char_per_set}
done
...返回带空格的字符串:
string_new=${array[@]}
echo "zero element of array is [${array[0]}]"
echo "entire array is [${array[@]}]"
echo $string_new
删除空格:
string_new=${string_new//[[:space:]]/}
echo $string_new
答案 3 :(得分:2)
IFS
变量:IFS=' '
arr=( )
read -r -a arr <<< "string morestring another"
unset IFS
str="123 123 12312312"
echo ${str// /}
//output: 12312312312312