0

我从属性文件中读取了这样的参数 {TA;TD;TE;TG;TI;TN;TNG;TP;TR;TS;TT},我需要将其拆分以删除 {} 和 ;。为此,我使用:

String[] zzz = myString.split("[{;}]");

当将该字符串发送到必须将其添加到数据库的方法时出现问题(不管如何),然后意识到第一个元素是空的。这意味着,当我打印它时,我看到:

空格处

助教

运输署

TE

...ETC

如果我调试它,我看到从初始字符串中提取的元素是:“”、“TA”、“TD”、“TE”等。

由于这个“”(发送字符串的方法在元素之间自动插入逗号),我在数据库中的行是这样的:

,TA,TD,TE...等

我怎样才能避免这种情况?我也试过用限制器参数来分割它,但它也不起作用。

提前致谢。

4

3 回答 3

3

你为什么不从头到尾去掉{}字符呢?

myString.substring(1, myString.length() - 1).split(";");
于 2012-07-20T09:17:44.167 回答
2

您可以使用您提供的否定模式并使用 aMatcher来获取元素:

public static void main(String[] args) {
    String data = "{TA;TD;TE;TG;TI;TN;TNG;TP;TR;TS;TT}";

    Matcher m = Pattern.compile("[{;]([^{;}]*)").matcher(data);

    while (m.find())
        System.out.println(m.group(1));
}

输出:

TA
TD
TE
TG
TI
TN
TNG
TP
TR
TS
TT
于 2012-07-20T09:38:15.610 回答
1

您可以对代码进行以下简单更改:

 myString.substring(1).split("[;}]");

这只是跳过了第一个字符,它是一个左大括号。正则表达式也可以稍微简单一些,因为您不必再​​在左大括号上拆分。

于 2012-07-20T13:24:57.777 回答