当前位置: 代码迷 >> VFP >> 求代码:拆分长字符串解决思路
  详细解决方案

求代码:拆分长字符串解决思路

热度:9517   发布时间:2013-02-26 00:00:00.0
求代码:拆分长字符串
在网上下了个单词表,形式是一个连续不断的文字序列(长字符串),部分内容如下。
想拆成每个单词一行,存入一个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
  相关解决方案