【问题标题】:Java read a string character by character and put them to the arrayJava逐个字符读取字符串并将它们放入数组
【发布时间】:2018-12-14 21:21:19
【问题描述】:
String text="99.91.220.138 - - [05/Oct/2015:06:37:26 +0300] "GET /R/0A/ID_0000013091.ism/QualityLevels(1469889)/Fragments(video=14795200000) HTTP/1.1" 200 658377 "-" "Firefox/1.5" "-" rt=0.000 ut="-" cs=HIT";

我想读取这个字符串的所有字符,并将两个空格之间的字符串放入一个数组中:

- array[0] will be "99.91.220.138"



- array[1] will be "-"



- array[2] will be "-"

现在如果两个空格之间有一个“[]”或引号(“”),我想获取字符串直到标记结束,例如:

- array[3] will be "[05/Oct/2015:06:37:26 +0300]"



- array[4] will be "GET
   /R/0A/ID_0000013091.ism/QualityLevels(1469889)/Fragments(video=14795200000)
   HTTP/1.1"

在此之后或之前,我需要从数组中删除“-”和一些不必要的东西以获得更高的性能。

.

除了使用正则表达式,您还有什么建议?

【问题讨论】:

  • 您能否详细说明为什么您不想要使用正则表达式的解决方案?这似乎是一个真正的好用例。
  • 我的组长不允许使用正则表达式
  • 按空格使用String#slpit text.split(" ")
  • 那“[”
  • 你的团队领导做出了多么奇怪的选择。好吧,这也将String.split 排除在外。使用正则表达式。您可能应该将您的字符串转换为char[],以一些非常复杂和模糊的方式进行,然后可能与您的团队负责人交谈,直接不允许正则表达式可能不是要走的路。

标签: java arrays parsing split char


【解决方案1】:

我建议你使用拆分功能。

因此,对于您的第一个功能,您使用:

string.split(" ");

为了保留引用的陈述,这可能会对您有所帮助:

Split a string by whitespace, keeping quoted segments, allowing escaped quotes

【讨论】:

  • 您的解决方案完全依赖于正则表达式(就像您针对第二个问题的链接解决方案一样),这已被 OP 排除。
  • string.split(" ") 对我没有帮助,因为我还需要获取 '[' 和 ']' 之间的字符串
  • 我是用正则表达式做的,但现在我需要用不同的方式来做。
  • 哦,你是对的!也许您可以实现一个迭代器来检查数组中的每个字符。然后,每次您对报价进行罚款时,根据该布尔值更改一个布尔值,该布尔值在遇到空格或方括号时拆分即将到来的数组?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-29
  • 1970-01-01
  • 2013-12-18
  • 1970-01-01
  • 2019-11-11
  • 1970-01-01
相关资源
最近更新 更多