3

基本上我有这些连接字符串需要拆分,下面是一个示例:

name=type,info1;101;localhost;-1;false;false

我想把它分成三个变量:名称、类型和信息。

名称是 '=' 之前的位 ("name") 类型是 '=' 之后和 ',' 之前的位 ("type") 信息是 ',' 之后的所有内容 ("info1;101 ;本地主机;-1;假;假")

我曾尝试使用“.split”功能,但无济于事。有人可以帮我使用带有子字符串的正则表达式吗?谢谢。

没有太多实践拆分功能,所以它是这样的:

String name [] = connString.split(",");
String type [] = connString.split(";");
String info [] = connString.split("");

更多的:

您可以使用“.split”方法将这一行中的参数从 XML 文档中分离出来吗?

 <rect x="298.43" width="340.00" y="131.12" height="380.00" id="rect_1" style="stroke-width: 1; stroke: rgb(0, 0, 0); fill: rgb(255, 102, 0); "/>
4

5 回答 5

6

你的意思是?

String s = "name=type,info1;101;localhost;-1;false;false";
String[] parts = s.split(",");
String[] parts2 = parts[0].split("=");
String name = parts2[0];
String type = parts2[1];
String info = parts[1];
于 2012-08-23T08:32:30.390 回答
4

我认为你应该在这里使用模式。

Pattern p = Pattern.compile("(\\w+)=(\\w+),(.*)");
Matcher m = p.matcher(str);
if (m.find()) {
    String name = m.group(1);
    String type = m.group(2);
    String info = m.group(3);
}
于 2012-08-23T08:35:14.857 回答
4

只使用一个.split()

String s = "name=type,info1;101;localhost;-1;false;false";
String[] words = s.split("=|,");
String name = words[0];
String type = words[1];
String info = words[2];
System.out.println("Name: " + name + "\nType: " + type + "\nInfo: " + info);

输出:

Name: name
Type: type
Info: info1;101;localhost;-1;false;false
于 2012-08-23T08:37:37.943 回答
1

分裂:

@Test
public void testParseUsingSplit() {
    String line = "name=type,info1;101;localhost;-1;false;false";

    String name;
    String type;
    String info;

    String[] split1 = line.split(",", 2);
    info = split1[1];
    String[] split2 = split1[0].split("=");
    name = split2[0];
    type = split2[1];

    Assert.assertEquals("name", name);
    Assert.assertEquals("type", type);
    Assert.assertEquals("info1;101;localhost;-1;false;false", info);
}

正则表达式:

@Test
public void testParseUsingRegex() {
    String line = "name=type,info1;101;localhost;-1;false;false";

    Pattern pattern = Pattern.compile("([^=]+)=([^,]+),(.*)");
    Matcher m = pattern.matcher(line);
    Assert.assertTrue(m.matches());

    String name = m.group(1);
    String type = m.group(2);
    String info = m.group(3);

    Assert.assertEquals("name", name);
    Assert.assertEquals("type", type);
    Assert.assertEquals("info1;101;localhost;-1;false;false", info);
}
于 2012-08-23T08:32:43.387 回答
1
public  void splitString(String connectionString) {
        String[] splitted = connectionString.split(",");
        String[] nameAndType = splitted[0].split("=");
        String name = nameAndType[0];
        String type = nameAndType[1];
        String info = splitted[1].substring(splitted[1].indexOf("info")+4);
        System.out.println(" name "+name);
        System.out.println(" type "+type);
        System.out.println(" info "+info);
    }

试试这个。这是你想要做的吗?

于 2012-08-23T08:39:36.073 回答