我们需要在java中找到标签内标签名称的长度
{Student}{Subject}{Marks}100{/Marks}{/Subject}{/Student}
所以学生标签的长度为7,主题标签的长度为7,标记的长度为5。
我正在尝试拆分标签,然后找到标签内每个字符串的长度。
但是我正在尝试的代码只给出了第一个标签名称,而不是其他名称。
你可以帮我解决这个问题吗?
我是java的新手。如果这是一个非常愚蠢的问题,请告诉我。
代码部分:
System.out.println(
getParenthesesContent("{Student}{Subject}{Marks}100{/Marks}{/Subject}{/Student}"));
public static String getParenthesesContent(String str) {
return str.substring(str.indexOf('{')+1,str.indexOf('}'));
}
答案 0 :(得分:1)
您可以将模式与此正则表达式\\{(\[a-zA-Z\]*)\\}
一起使用:
2018-01-30T18:30:00.000Z
输出
String text = "{Student}{Subject}{Marks}100{/Marks}{/Subject}{/Student}";
Matcher matcher = Pattern.compile("\\{([a-zA-Z]*)\\}").matcher(text);
while (matcher.find()) {
System.out.println(
String.format(
"tag name = %s, Length = %d ",
matcher.group(1),
matcher.group(1).length()
)
);
}
答案 1 :(得分:0)
是使用正则表达式,找到模式并应用它。
答案 2 :(得分:0)
您可能想尝试另一个正则表达式:
String s = "{Abc}{Defg}100{Hij}100{/Klmopr}{/Stuvw}"; // just a sample String
Pattern p = Pattern.compile("\\{\\W*(\\w++)\\W*\\}");
Matcher m = p.matcher(s);
while(m.find()) {
System.out.println(m.group(1) + ", length: " + m.group(1).length());
}
输出你得到:
Abc, length: 3
Defg, length: 4
Hij, length: 3
Klmopr, length: 6
Stuvw, length: 5
如果你需要使用charAt()
遍历输入字符串,你可能想考虑使用这样的东西(我在代码的注释中做了一些解释):
String s = "{Student}{Subject}{Marks}100{/Marks}{/Subject}{/Student}";
ArrayList<String> tags = new ArrayList<>();
for(int i = 0; i < s.length(); i++) {
StringBuilder sb = new StringBuilder(); // Use StringBuilder and its append() method to append Strings (it's more efficient than "+=") String appended = ""; // This String will be appended when correct tag is found
if(s.charAt(i) == '{') { // If start of tag is found...
while(!(Character.isLetter(s.charAt(i)))) { // Skip characters that are not letters
i++;
}
while(Character.isLetter(s.charAt(i))) { // Append String with letters that are found
sb.append(s.charAt(i));
i++;
}
if(!(tags.contains(sb.toString()))) { // Add final String to ArrayList only if it not contained here yet
tags.add(sb.toString());
}
}
}
for(String tag : tags) { // Printing Strings contained in ArrayList and their length
System.out.println(tag + ", length: " + tag.length());
}
输出你得到:
Student, length: 7
Subject, length: 7
Marks, length: 5