将带有空格分隔符的字符串转换为数组。并输出这个数组,就像一个字符串

Posted

技术标签:

【中文标题】将带有空格分隔符的字符串转换为数组。并输出这个数组,就像一个字符串【英文标题】:Convert string with space-delimiters to array. And output this array, like a string 【发布时间】:2020-08-30 06:54:48 【问题描述】:

我有一个问题,我已经在 bash/powershell 中解决了。 我需要将 java 的参数存储在一个变量中。

SET JAVA_ARGS="-Xms256m -Xmx2048m"
java %JAVA_ARGS% -jar my.jar

当我做这个的时候,我收到了

Invalid initial heap size: -Xms256m -Xmx2048m

很好,我尝试在 powershell 中解决这个问题

$JavaArgs="-Xms256m -Xmx2048m"
$JavaArgsArray=$JavaArgs.Split(" ")
java $JavaArgsArray -jar my.jar

在 bash 中,我这样做了

java_arguments="-Xms256m -Xmx2048m"
IFS=' ' read -r -a array_java_arguments <<< "$java_arguments"
java "$array_java_arguments [@]" -jar my.jar

但是,我需要在cmd中有版本,如何解决这个问题?请问你能帮帮我吗 ? 我需要从变量中获取数组,并且我必须在脚本中使用这个数组。没有分隔符,就像将字符串转换为数组一样,输出应该是相同的。 例如,如果我有:

ECHO %JAVA_ARGS%

输出

-Xms256m -Xmx2048m

我必须有类似的输出:

ECHO %ARRAY_JAVA_ARGS%

【问题讨论】:

尝试使用不同的分隔符分隔它们,例如 ;, 为什么要为变量分配引号? 【参考方案1】:

很容易。 我用过:

java "'%JAVA_ARGS%' -jar my.jar"

需要做的:

java "%JAVA_ARGS% -jar my.jar"

只是不要使用:

'%JAVA_ARGS%'

用途:

%JAVA_ARGS%

【讨论】:

以上是关于将带有空格分隔符的字符串转换为数组。并输出这个数组,就像一个字符串的主要内容,如果未能解决你的问题,请参考以下文章

sql数组转换为字符串

将数组对象转换为字符串并分隔值

将空格分隔的字符串读入 Bash 中的数组

dlmwriter 在每个字符之间放置空格

以空格为分隔符的爆炸数组并将值推送到新数组

C++输入多行数字到数组