【问题标题】:best way to split String in java在java中拆分字符串的最佳方法
【发布时间】:2015-01-09 10:18:31
【问题描述】:

我有一个像"asdfsd[12345]skfjoib[346676]qwoiejflksjv[12345]" 这样的字符串 我想把它拆分成一个数组,比如

Array[0] = asdfsd
Array[1] = [12345]
Array[2] = skfjoib
Array[3] = [346676]
Array[4] = qwoiejflksjv
Array[5] = [12345]

最好的方法是什么(更少的代码,更快的速度)?

【问题讨论】:

  • 你有没有尝试过?
  • This 可以帮助您。
  • @LutzHorn 是的,但对我来说似乎有点笨拙。我将 [] 中的字符串与正则表达式匹配,获取它的索引,然后拆分源字符串,然后将匹配器插入到数组中。
  • 这看起来像是迈向最终目标的中间步骤 - 专注于提取文本在您的域中的内容和数字作为数字可能更容易(即拆分并处理到下一个一步到位,而不是先填充中间数组)。使用 Scanner 类设置您自己的分隔符并使用 next() 和 nextInt() 可能会很好地探索这个想法。

标签: java string split


【解决方案1】:

这是一种方法:

input.split("(?=\\[)|(?<=\\])"))

正则表达式表示“在[ 之前或] 之后的任何内容上拆分”

演示:

String input = "asdfsd[12345]skfjoib[346676]qwoiejflksjv[12345]";
for (String s : input.split("(?<=\\])|(?=\\[)"))
    System.out.println(s);

输出:

asdfsd
[12345]
skfjoib
[346676]
qwoiejflksjv
[12345]

【讨论】:

  • 这对我来说真的是一个完美的解决方案!谢谢
【解决方案2】:

非常快'n脏:

String[] ss = s.replaceAll("[", ";[").replaceAll("]", "];").split(";");

【讨论】:

  • 如果字符串以;开头,则显然不起作用。
猜你喜欢
  • 2021-03-18
  • 2015-05-29
  • 2017-12-20
  • 2010-12-03
  • 2011-10-18
  • 2018-07-27
  • 2023-03-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多