作者cjoe (TeA)
看板java
标题[问题] 参数的Parser如何撰写呢?
时间Sun Jun 21 02:02:48 2015
假设我今天要抓取一个指令所下的的参数,指令如下
function1('20150621','摘要','这篇研究...略','cjoe');
我本来是用很简单的方法来撷取这串指令的参数,基本上就是用『,』当切割点,
得到的结果如下(实作上的细节有部份已经略掉):
20150621
摘要
这篇研究...略
cjoe
但是我今天遇到像 '这篇,,,研究...略',使用『,』当切割点马上就会变不可行
我本来想用『','』当切割点,但是我想如果刚好又遇到有参数刚好是『','』
这样一定马上就又出错了,'我故意要搞怪\',\''
目前我先使用 ',' 来当切割点 ,以我的CASE来说,
可能已经不太会发生错误了,但是毕竟这样的方式,只是徒增程式不可靠性而已...
因此我有点好奇,程式语言是如何parse这些参数的呢?
我该怎麽正确的去parse我要的资料呢?
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 59.127.0.145
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/java/M.1434823371.A.186.html
1F:推 Killercat: 参数不是资料,本来就有局限性,其实不用管太多 06/21 02:12
2F:→ Killercat: GNU linux commands本来就不是什麽都吃 06/21 02:13
※ 编辑: cjoe (59.127.0.145), 06/21/2015 02:17:10
※ 编辑: cjoe (59.127.0.145), 06/21/2015 02:23:31
3F:→ cjoe: 感谢 我现在想想 好像用 ',' 切就可以了 @_@ 06/21 02:26
4F:→ cjoe: 参数中'都会变成\' ,我用','来切,\',\' 本来就不会去切到 06/21 02:29
5F:→ ssccg: 如果参数 '和, 中间有空白呢? 06/21 02:35
6F:→ ssccg: 从头parse过去遇到没跳脱的 ' 就切换状态就是了 06/21 02:36
7F:→ ssccg: string用了 ' 包起来不就是为了分隔? 06/21 02:36
8F:→ Killercat: 他就是想说「我资料要是就是想要有'或者「\'」怎麽办」 06/21 09:06
9F:→ Killercat: 诶,我倒是想到了,GNU Command里面这种资料来源 06/21 09:07
10F:→ Killercat: 用两种方法吃 : 1. stdin 2. 强制放最尾巴的参数 06/21 09:07
11F:→ Killercat: 这跟grep/sed似乎是有点像 06/21 09:08
12F:→ MonyemLi: 其实就类似csv parser,一个字一个字读 06/21 11:33
13F:→ bitlife: lexical analysis需要使用有限状态机,详见compiler书籍 06/21 17:30
14F:→ cjoe: 感谢各位的回答! 06/21 20:01
15F:→ qrtt1: 切出来栏位不对,就喷 error 靠北使用者,请他修改资料 ^^ 06/21 21:32
16F:→ eieio: 用 Guava Splitter 吧 06/23 04:45