Java 方法使用拆分器或标记器在花括号内获取字符串
试图获取字符串的内部,我环顾四周,但找不到仅使用拆分器或标记器的解决方案 到目前为止,我正在这样做Java 方法使用拆分器或标记器在花括号内获取字符串,java,string,split,stringtokenizer,Java,String,Split,Stringtokenizer,试图获取字符串的内部,我环顾四周,但找不到仅使用拆分器或标记器的解决方案 到目前为止,我正在这样做 String s = "author= {insert text here},"; 这给了我在这里插入文本}, 在数组[1]中,但我希望不附加} 也试过 arraySplitBracket = s.trim().split("\\{", 0); 但是它给了我author=作为输出。通过排除arraySplitBracket.length()-1处的字符来获取子字符串怎么样 差不多 String
String s = "author= {insert text here},";
这给了我在这里插入文本}
,
在数组[1]中,但我希望不附加}
也试过
arraySplitBracket = s.trim().split("\\{", 0);
但是它给了我
author=
作为输出。通过排除arraySplitBracket.length()-1处的字符来获取子字符串怎么样
差不多
StringTokenizer st = new StringTokenizer(s, "\\{,\\},");
或者使用String类的replaceAll函数替换} 通过排除arraySplitBracket.length()-1处的字符来获取子字符串怎么样
arraySplitBracket[1] = arraySplitBracket[1].substring(0,arraySplitBracket.length()-1);
差不多
StringTokenizer st = new StringTokenizer(s, "\\{,\\},");
或者使用String类的replaceAll函数替换} 您可以使用\{([^}]*)\\}
Regex来获取花括号之间的字符串
arraySplitBracket[1] = arraySplitBracket[1].substring(0,arraySplitBracket.length()-1);
代码捕捉:
public static void main(String[] args) {
String input="{a c df sdf TDUS^&%^7 }";
String regEx="(.*[{]{1})(.*)([}]{1})";
Matcher matcher = Pattern.compile(regEx).matcher(input);
if(matcher.matches()) {
System.out.println(matcher.group(2));
}
}
String str = "{insert text here}";
Pattern p = Pattern.compile("\\{([^}]*)\\}");
Matcher m = p.matcher(str);
while (m.find()) {
System.out.println(m.group(1));
}
输出:
public static void main(String[] args) {
String input="{a c df sdf TDUS^&%^7 }";
String regEx="(.*[{]{1})(.*)([}]{1})";
Matcher matcher = Pattern.compile(regEx).matcher(input);
if(matcher.matches()) {
System.out.println(matcher.group(2));
}
}
String str = "{insert text here}";
Pattern p = Pattern.compile("\\{([^}]*)\\}");
Matcher m = p.matcher(str);
while (m.find()) {
System.out.println(m.group(1));
}
您可以使用\{([^}]*)\\}
Regex来获取花括号之间的字符串
代码捕捉:
public static void main(String[] args) {
String input="{a c df sdf TDUS^&%^7 }";
String regEx="(.*[{]{1})(.*)([}]{1})";
Matcher matcher = Pattern.compile(regEx).matcher(input);
if(matcher.matches()) {
System.out.println(matcher.group(2));
}
}
String str = "{insert text here}";
Pattern p = Pattern.compile("\\{([^}]*)\\}");
Matcher m = p.matcher(str);
while (m.find()) {
System.out.println(m.group(1));
}
输出:
public static void main(String[] args) {
String input="{a c df sdf TDUS^&%^7 }";
String regEx="(.*[{]{1})(.*)([}]{1})";
Matcher matcher = Pattern.compile(regEx).matcher(input);
if(matcher.matches()) {
System.out.println(matcher.group(2));
}
}
String str = "{insert text here}";
Pattern p = Pattern.compile("\\{([^}]*)\\}");
Matcher m = p.matcher(str);
while (m.find()) {
System.out.println(m.group(1));
}
你能清楚地提到你的输入格式吗?s
和author
指的是同一个变量吗author={insert text here},
在这里您有一个逗号,因此不清楚您分配给author
的字符串的确切格式。编辑的问题可能重复您可以清楚地提到您的输入格式吗?s
和author
引用的是同一个变量吗author={insert text here},
在这里,您有一个逗号,因此不清楚您分配给author
的字符串的确切格式。编辑后的问题可能重复使用stringtokenizer或split?我觉得应该简单一点,;oSplit或StringTokenizer只能用于拆分分隔字符串。在这里,由于您的案例是一个用大括号括起来的字符串,我希望它可能没有帮助。因此,如果我使用拆分,唯一的方法是对该字符串进行子字符串并执行length()-2?arraySplitBracket[1]。子字符串(0,arraySplitBracket[1]。length()-2)这似乎有效。是的,正如您所说的,如果使用拆分,您必须获取子字符串,忽略结束卷曲括号split或StringTokenizer。两者都将仅在固定分隔符的情况下使用。如果使用,则必须从最后一个大括号中获取子字符串。是否有任何方法仅使用stringtokenizer或split?我觉得应该简单一点,;oSplit或StringTokenizer只能用于拆分分隔字符串。在这里,由于您的案例是一个用大括号括起来的字符串,我希望它可能没有帮助。因此,如果我使用拆分,唯一的方法是对该字符串进行子字符串并执行length()-2?arraySplitBracket[1]。子字符串(0,arraySplitBracket[1]。length()-2)这似乎有效。是的,正如您所说的,如果使用拆分,您必须获取子字符串,忽略结束卷曲括号split或StringTokenizer。两者都将仅在固定分隔符的情况下使用。如果你使用,你必须从最后一个大括号中取子字符串。你能详细解释正则表达式吗?你能详细解释正则表达式吗