在网上下了个单词表,形式是一个连续不断的文字序列(长字符串),部分内容如下。
想拆成每个单词一行,存入一个dbf中,dbf表的三个字段为:单词,音标,汉意 三个
how often[]多久一次 exercise['eks2saiz]v.&n.锻炼;运动 skateboard[]v.踩滑板;参加滑板运动 hardly['ha:dli]adv. 几乎不;几乎没有 ever['ev2]adv. 曾;曾经 shop[60p]v.购物 once[w3ns]adv. 一次
其中的空白都是空格(asc=32). 以上内容拆分后应为:
单词 音标 汉意
how often [] 多久一次
exercise ['eks2saiz]v.&n. 锻炼;运动
skateboard [] v.踩滑板;参加滑板运动
hardly ['ha:dli] adv. 几乎不;几乎没有
ever ['ev2] adv. 曾;曾经 shop[60p]v.购物
once [w3ns] adv. 一次
请高手出招!
------解决方案--------------------------------------------------------
确实存在你说的问题。昨天因为有事,没有调试完成。
s = "how often[]多久一次 exercise['eks2saiz]v.&n.锻炼;运动 skateboard[]v.踩滑板;参加滑板运动 hardly['ha:dli]adv. 几乎不;几乎没有 ever['ev2]adv. 曾;曾经 shop[60p]v.购物 once[w3ns]adv. 一次 "
*regexp("([a-z].*)(\[.*\])([^ ]+ )", s)
*return
ALINES(ar, STRTRAN(STRTRAN(s, '[', CHR(13)), ']', ' '+CHR(13)))
单词 = ''
音标 = ''
汉意 = ''
FOR i=1 TO ALEN(ar)
*? ar[i]
DO CASE
CASE EMPTY(单词)
单词 = ar[i]
CASE ! EMPTY(单词) AND EMPTY(音标)
音标 = '[' + TRIM(ar[i]) + ']'
OTHERWISE
ar[i] = ALLTRIM(ar[i])
p = 1
n = AT(' ', ar[i], p)
DO WHILE ASC(SUBSTR(ar[i], n+1, 1)) > 127
p = p+1
n = AT(' ', ar[i], p)
ENDDO
汉意 = LEFT(ar[i], n)
? 单词,' | ', 音标,' | ', 汉意
单词 = SUBSTR(ar[i], n+1)
音标 = ''
汉意 = ''
ENDCASE
NEXT