Split字符串分拆

Keven-Lee 2017-12-01 06:20:13
我有这么一个字符串String str = "sh -c 'ls / -lh'"
我想按空格拆成一个数组String[]{"sh", "-c", "'ls / -lh'"}
哪位能写个算法吗?就是说用单引号或双引号包起来的字符串不按空格拆分。

Java语言最好,其他语言也行。
...全文
107 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
Keven-Lee 2017-12-04
  • 打赏
  • 举报
回复
能解决就好,管他是正则还是啥。当然,如果能有纯算法的更好。算了,马上结贴了吧。多谢各位。
qq_35048233 2017-12-02
  • 打赏
  • 举报
回复
我只是来看看!果然,要匹配正则表达式,哈哈,
java小白脸 2017-12-01
  • 打赏
  • 举报
回复
public class Test01 { public static void main(String[] args) { String str="sh -c 'ls / -lh'"; String[] strs=str.split(" "); for(String temp:strs) { System.out.println(temp); } } }
  • 打赏
  • 举报
回复

var str="sh -c 'ls / -lh'";
var regex=/('[^']*'|"[^"]*")|\s+/m;
var result=str.split(regex).filter(function(ele){
if(ele){
return ele;
}
});

  • 打赏
  • 举报
回复

public static void main(String[] args) {
String input = "sh -c 'ls / -lh'\"hha lk\"";
List<String> result=splitStr(input);
System.out.println(result);
}
public static List<String> splitStr(String input){
String regex="'[^']*'|\"[^\"]*\"|\\S+";
Matcher m=Pattern.compile(regex, Pattern.MULTILINE).matcher(input);
List<String> list=new ArrayList<String>();
while(m.find()){
list.add(m.group());
}
return list;
}

50,523

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧