如何在Java中拆分长字符串?

时间:2015-10-30 06:00:49

标签: java regex string split

如何编辑此字符串并将其拆分为两个?

 String asd = {RepositoryName: CodeCommitTest,RepositoryId: 425f5fc5-18d8-4ae5-b1a8-55eb9cf72bef};

我想制作两个字符串。

String reponame;
String RepoID;

reponame应为CodeCommitTest repoID应该是425f5fc5-18d8-4ae5-b1a8-55eb9cf72bef

有人可以帮助我吗?感谢

2 个答案:

答案 0 :(得分:2)

以下是使用正则表达式的Java代码,以防您无法使用JSON解析库(这可能是您应该使用的):

String pattern = "^\\{RepositoryName:\\s(.*?),RepositoryId:\\s(.*?)\\}$";
String asd = "{RepositoryName: CodeCommitTest,RepositoryId: 425f5fc5-18d8-4ae5-b1a8-55eb9cf72bef}";
String reponame = "";
String repoID = "";
Pattern r = Pattern.compile(pattern);
Matcher m = r.matcher(asd);
if (m.find()) {
    reponame = m.group(1);
    repoID = m.group(2);
    System.out.println("Found reponame: " + reponame + " with repoID: " + repoID);
} else {
    System.out.println("NO MATCH");
}

此代码已在IntelliJ中测试过,运行时没有错误。

<强>输出:

Found reponame: CodeCommitTest with repoID: 425f5fc5-18d8-4ae5-b1a8-55eb9cf72bef

答案 1 :(得分:0)

假设输入中没有引号,并且存储库名称和ID由字母,数字和短划线组成,那么这应该可以获取存储库名称:

Pattern repoNamePattern = Pattern.compile("RepositoryName: *([A-Za-z0-9\\-]+)");
Matcher matcher = repoNamePattern.matcher(asd);
if (matcher.find()) {
    reponame = matcher.group(1);
}

你可以做类似的事情来获取ID。上面的代码只查找RepositoryName:,可能后跟空格,后跟一个或多个字母,数字或连字符;然后group(1)方法提取名称,因为它是模式中()中包含的第一个(也是唯一的)组。