差異處
這裏顯示兩個版本的差異處。
Both sides previous revision 前次修改 下次修改 | 前次修改 | ||
java:basic:process:parameter_with_double_quotes [2017/02/17 11:58] tony [How to?] |
java:basic:process:parameter_with_double_quotes [2023/06/25 09:48] (目前版本) |
||
---|---|---|---|
行 23: | 行 23: | ||
List<String> param = new ArrayList<>(); | List<String> param = new ArrayList<>(); | ||
for( String token : aParams ){ | for( String token : aParams ){ | ||
- | String newToken = token.replace("\"", "\"\""); | + | if(token.contains("\"")){ |
- | if( newToken.startsWith("\"") || newToken.endsWith("\"") ) | + | token = StringUtil.apendStrings("\"", token.replace("\"", "\"\""), "\""); |
- | newToken = StringUtil.apendStrings("\"", newToken, "\""); | + | } |
- | + | param.add(token); | |
- | param.add(newToken); | + | |
} | } | ||
return param; | return param; | ||
行 36: | 行 35: | ||
} | } | ||
</code> | </code> | ||
+ | 首先是如果字串內有雙引號,就需要透過雙引號去跳脫;但如果雙引號是在前後,會導致PrcoessBuilder不會再額外+雙引號上去,所以client要先+上去。 | ||
===== commons-cli ===== | ===== commons-cli ===== | ||
除了ProcessBuilder,我們還遇到commons-cli parse參數中,如果包含double-quotes會被消掉的問題。在1.2版本上,如果你的參數為: | 除了ProcessBuilder,我們還遇到commons-cli parse參數中,如果包含double-quotes會被消掉的問題。在1.2版本上,如果你的參數為: |