【问题标题】:Something similar to split()?类似于 split() 的东西?
【发布时间】:2012-03-04 02:32:23
【问题描述】:

我正在寻找一个字符串并在换行符处将其分成一个数组 (\n) 我尝试使用 split 但这会去掉分隔符。如果存在,我需要将\n 保留在每行的末尾。类似的东西已经存在还是我需要自己编写代码?

【问题讨论】:

  • 谢谢大家!它解决了我的问题。我已经尝试了一百万次来理解正则表达式,但仍然没有理解它。
  • 你真的应该看看我链接到的教程,因为它是迄今为止我见过的最好的正则表达式教程。

标签: java android string split


【解决方案1】:

我尝试使用 split 但这会去掉分隔符。如果存在,我需要将 \n 保留在每行的末尾。

如果您在正则表达式中使用前瞻或后瞻,您仍然可以使用它并保留换行符。查看我所知道的最好的正则表达式教程:
Regex Tutorial
Look-Around section of the Regex Tutorial

例如:

public class RegexSplitPageBrk {


   public static void main(String[] args) {
      String text = "Hello world\nGoodbye cruel world!\nYeah this works!";
      String regex = "(?<=\\n)";  // with look-behind!

      String[] tokens = text.split(regex);

      for (String token : tokens) {
         System.out.print(token);
      }
   }
}

前瞻或后视(也称为“环视”)不会破坏它们匹配的字符。

【讨论】:

  • 与其简单地说“你做错了”——为什么不提供...解决方案?
  • @debracey:这一直是计划。我经常发布一个初始答案,然后添加更多内容,以免处理被删除的问题。当这种情况发生时,我讨厌它。我也不喜欢不先测试就发布代码。
【解决方案2】:

使用 Lookahead 断言替代 @Hovercraft 解决方案:

String[] result = s.split("(?=\n)");

http://www.regular-expressions.info/lookaround.html 中有关 Lookahead 的更多详细信息

【讨论】:

    【解决方案3】:

    另一种解决方案是在拆分后添加分隔符

    String delimiter = "\n"
    String[] split = input.split(delimiter);
    for(int i = 0; i < split.length; i++){
        split[i] += delimiter;
    }
    

    【讨论】:

      猜你喜欢
      • 2020-09-28
      • 1970-01-01
      • 1970-01-01
      • 2011-04-18
      • 2011-10-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多