我正在尝试转换nisnetgrouptriple字符串,其格式如下:
(host,user,domain)
(,user,)
(host,,)
(host,user,)
(,,domain)
变成一个netgrouptriple对象,如下所示:
public class NetgroupTriple {
private String hostname;
private String username;
private String domainName;
public String getHostname() {
return hostname;
}
public void setHostname(String hostname) {
this.hostname = hostname;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getDomainName() {
return domainName;
}
public void setDomainName(String domainName) {
this.domainName = domainName;
}
}
我有一个粗略的函数来完成它,但我希望有一个更干净的方式使用流。
public static NetgroupTriple fromString(String member) {
NetgroupTriple triple = new NetgroupTriple();
String[] split = member.split(",");
if(split.length != 3)
throw new Exception("bad");
if(!split[0].equals("("))
triple.setHostname(split[0].replace("(",""));
if(!split[1].isEmpty())
triple.setUsername(split[1]);
if(!split[2].equals(")"))
triple.setDomainName(split[2].replace(")",""));
return triple;
}
有没有人知道一个更干净的方法来实现这一点?
2条答案
按热度按时间col17t5w1#
我想这是可行的:
然后解析:
还是没有我希望的那么优雅。
jaxagkaj2#
如果你知道总是有封装括号,你可以从一开始就删除它们
那么,既然它出现的顺序
member
总是(“主机”、“用户”、“域”)那么你可以做什么所以你的
fromString()
看起来像这会让你
NetgroupTriple
成为immutable
```public class NetgroupTriple {
private String hostname;
private String username;
private String domainName;
}