首页 > 解决方案 > 如何删除字符串中的 \r\n 并将字符串转换为数组

问题描述

我有从 api 获取的字符串,如下所示

/patha/pathb/pathc\r\n/patha/pathb/pathc\r\n/patha/pathb/pathc

如何将 /patha/pathb/pathc 拆分为数组中的元素?

标签: bashawksedtr

解决方案


您可以使用your_array=($(sed 's/\\r\\n/ /g' <<< $your_string)).

echo $your string | sed. . . .如果您愿意,也可以使用。要么工作正常。echo 可能在任何地方都更具可读性和更多实现。

编辑:如果这些路径包含空格,这将是一个更好的选择 -

your_array=($(sed 's/ /~_~/g; s/\\r\\n/ /g' <<< $your_string))
i=0
for x in ${your_array[@]}; do your_array[$i]=$(sed 's/~_~/ /g' <<< $x) && let i++; done

我曾经~_~不覆盖任何现有的字符。

Edit2:更好的方法是 -

temp=$(sed 's|\\r||g; s|\\|\\\\|g' <<< $your_string)
ifs=$IFS
IFS="
"
your_array=($(for x in $(eval echo -e $temp); do echo $x; done))
IFS=$ifs

推荐阅读