您好我有以下字符串我试图拆分hibernate createAlias和查询限制。
我需要将字符串分成三部分。
employeeProfile.userProfile.shortname
1. employeeProfile.userProfile
2. userProfile
3. userProfile.shortName
我也希望做一个不同长度的字符串是动态的。
employeeProfile.userProfile.anotherClass.shortname
1. employeeProfile.userProfile.anotherClass
2. userProfile.anotherClass
3. anotherClass.shortName
使用以下代码,除了第三个外,我能够使用大部分内容。
public void hasAlias(Criteria t, final Map<String, Object> map) {
for (Map.Entry<String, Object> entry : map.entrySet()) {
String key = entry.getKey();
if (key != null && key.contains(".")) {
key = key.substring(0, key.lastIndexOf("."));
String value = key.contains(".") ? key.substring(key.lastIndexOf(".") + 1, key.length()) : key;
t.createAlias(key, value);
}
}
}
有人可以帮助我获得3号吗?
答案 0 :(得分:1)
employeeProfile.userProfile.shortname
- employeeProfile.userProfile
- USERPROFILE
- userProfile.shortName
醇>
说我们有这个:
int index1 = str.indexOf(".");
int index2 = str.lastIndexOf(".");
然后这个工作(模块+ 1在这里和那里):
substring(0, index2);
substring(index1, index2);
substring(index1);
答案 1 :(得分:1)
答案 2 :(得分:1)
要获得数字3,您可以使用正则表达式。采用最后两项的正则表达式为:
[a-zA-z]+\.[a-zA-z]+$
使用以下代码获取数字3:
Pattern pattern = Pattern.compile("[a-zA-z]+\\.[a-zA-z]+$");
Matcher matcher = p.matcher("employeeProfile.userProfile.anotherClass.shortname");
if (m.find()) {
System.out.println(m.group(1));
}
这将打印:
anotherClass.shortname
答案 3 :(得分:1)
我想你可能会对Java的StringTokenizer好运:http://docs.oracle.com/javase/7/docs/api/java/util/StringTokenizer.html
您可以这样设置:
String myString = "employeeProfile.userProfile.shortname";
String myDelimiter = ".";
StringTokenizer tokens = new StringTokenizer(myString,myDelimiter);
由此,您应该能够得到您需要的东西并使用令牌。