如何编辑此字符串并将其拆分为两个?
String asd = {RepositoryName: CodeCommitTest,RepositoryId: 425f5fc5-18d8-4ae5-b1a8-55eb9cf72bef};
我想制作两个字符串。
String reponame;
String RepoID;
reponame应为CodeCommitTest repoID应该是425f5fc5-18d8-4ae5-b1a8-55eb9cf72bef
有人可以帮助我吗?感谢
答案 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)
方法提取名称,因为它是模式中()
中包含的第一个(也是唯一的)组。