java - 用空格作为分隔符将它们分开,但<>中的空格在Java中应该被忽略

标签 java string split

我想用空格作为分隔符来分割它们,但<>中的空格应该被忽略。

输出到"abc <def deaf;hello world> good"应该是

  • abc
  • <def deaf;hello world>

如何在 Java 中实现此功能? 正则表达式应该可以工作,但不使用正则表达式实现会更好。

最佳答案

最简单的方法是遍历字符串:

ArrayList<String> out = new ArrayList<String>();
int i, last = 0;
int depth = 0;
for(i=0; i != string.length(); ++i) {
    if(string.charAt(i) == '<') ++depth;
    else if(string.charAt(i) == '>') { if(depth >0) --depth; }
    else if(string.charAt(i) == ' ' && depth == 0) {
        out.add(string.substring(last, i));
        last = i+1;
    }
}
if(last < string.length()) out.add(string.substring(last));

您的 sample "abc <def deaf;hello world> good" ,结果是["abc", "<def deaf;hello world>", "good"]

关于java - 用空格作为分隔符将它们分开,但<>中的空格在Java中应该被忽略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19481448/

相关文章:

java - Web服务与java android

java - 遍历所有已安装应用程序的 AndroidManifest.xml 文件?

regex - Perl - 如何从文本文件中省略行?

java - 根据括号和下一个字符分割字符串

Java线程相当于Python线程守护进程模式

java - 如何将命令行参数传递给 gradle 中的主类?

string - Python3 将非英文字符转换为英文字符

java - 可靠地将任何对象转换为字符串,然后再返回

c++ - 在 C++ 中使用多个定界符拆分字符串

java - 插入冒号的方法是什么(:) after every two characters in a string?