2

这是我工作中最糟糕的情况。我必须自动分离这组字符串,但只是不知道我应该使用哪个函数。这完全是困难的!我需要在 Excel 中为我的数据库工作的下一步分离字符串。

以下是数据示例:

A列中要分隔的字符串——

java-1.6.0-openjdk-1.6.0.0-1.21.b17.el6.x86_64
java-utils-1.6.0.0-1.el6.x386 
Java-1.7.0-openjdk-1.7.1-3.1.5
gdb-1.6-5.2.7.el6

成功分离后的字符串部分,列BCDEFGHI --

#         name        #         Version    # OSLv # Architecture #
java # 1.6.0 #openjdk # 1.6.0.0 # 1.21.b17 # el6  # x86_64 #
java#  utils#         # 1.6.0.0 # 1         #el6_3 #x386  #
Java#       #         # 1.7.1   #   3.1.5  #      #      #
gdb #       #         # 1.6     #5.2.7     #el6   #      #

(在我看来,如果我们先将字符串分成两部分,比如

java-1.6.0-openjdk-1.6.0.0-1.21.b17     #####     .el6.x86_64

那么以后拆分成特定部分会更容易......也许!?)

非常感谢您的每一点帮助。

我会接受你可以为我以后学习提供的任何解决方案:D

“#”标记表示将字符串的各个部分分隔到不同的单元格中。

4

2 回答 2

2

以下公式不是一个完整的解决方案,但应该为您提供一个了解您需要执行的字符串操作类型的起点:

从要解析的字符串的头部开始:

  =LEFT(A1,SEARCH("-",A1)-1)

  =IFERROR(MID(A1,LEN(A6)+2,SEARCH("-",A1,LEN(A6)+2)-LEN(A6)-2),"-")

  =IFERROR(MID(A1,LEN(A6&B6)+3,SEARCH("-",A1,LEN(A6&B6)+3)-LEN(A6&B6)-3),"-")

  =IFERROR(MID(A1,LEN(A6&B6&C6)+4,SEARCH("-",A1,LEN(A6&B6&C6)+5)-LEN(A6&B6&C6)-4),"-")

(我在字符串中间留了一些让你做。)

从要解析的字符串的尾部:

  =IFERROR(MID(A1,SEARCH("el",$A1),SEARCH("x",A1)-(SEARCH("el",A1)+1)),"-")

  =IFERROR(RIGHT(A1,LEN(A1)-SEARCH("x",A1)+1),"-")

字符串没有相同数量的元素并且并非所有元素都由破折号(“-”)分隔的事实使得这比通常的字符串解析任务更复杂。当您遇到困难时,您应该返回一个更具体的问题。

于 2013-02-13T07:01:21.880 回答
2

对于非常复杂的字符串提取,我很想在工作表函数中使用正则表达式。

请参阅http://excelicious.wordpress.com/code-samples/vba/regex-functions/了解您可以使用/在其上构建的库。

于 2013-02-13T11:46:59.497 回答