我的Java输入String str = "aa 2 xx 'b cc dd e' -o se '4-5'"
我希望输出由空格分隔的标记,单引号中的空格除外。因此,输出应该是:
aa
2
xx
'b cc dd e'
-o
se
'4-5'
我可以通过在空格上拆分字符串,然后合并像'b,cc,dd,e‘这样的字符串序列来得到'b cc dd e',但是我想要一个更好的方法,可能是使用一些正则表达式。
发布于 2019-04-20 09:42:53
我认为您可以通过迭代字符串并使用布尔值来检测引号。
尝试使用以下命令:
public List<String> test(String a){
final List<String> list = new ArrayList<>();
boolean quotes = false;
StringBuilder sb = new StringBuilder();
for(char c: a.toCharArray()){
if(quotes){
if('\'' == c) {
quotes = false;
if(!sb.toString().isEmpty()) {
list.add(sb.toString());
}
sb = new StringBuilder();
} else {
sb.append(c);
}
}else {
if (' ' == c) {
if (!sb.toString().isEmpty()) {
list.add(sb.toString());
sb = new StringBuilder();
}
} else if ('\'' == c) {
quotes = true;//entra na string do quote
} else{
sb.append(c);
}
}
}
if(!sb.toString().isEmpty()){
list.add(sb.toString());
}
return list;
}
https://stackoverflow.com/questions/55769384
复制相似问题