一、说明
通常截取一个字符串内指定字符之间的东西,一般有两种方式:
正则表达式 和
java.lang.String 中自带的
substring 方法。今天先说采用 substring 的方法
二、采用substring 截取多个{}之内的字符串
截取方法:
/**
* 截取 { } 内的字符串到list中
* @param origin 源字符串
* @return List<String>
*/
public static List<String> subStr(String origin) {
if (origin == null) {
return null;
}
List<String> ret = new ArrayList<>();
int ch = 0, start, end;
while (ch < origin.length()) {
// 索引出现负数,说明在源字符串指定位置之后已经没有 '{' 或者 '}'
start = origin.indexOf("{", ch);
end = origin.indexOf("}", ch);
// substring 内部索引禁止出现负数
if (start == -1 || end == -1) {
break;
}
String tmp = origin.substring(start + 1, end);
//保存上一次截取时的索引
ch = end + 1;
ret.add(tmp);
}
return ret;
}
测试:
String test = "//{username}/{password}/asafd{s}gh{n";
System.out.println(subStr(test));
System.out.println(subStr("{ss{}}"));
输出:
[username, password, s]
[ss{]
注意:看上面的输出第二行,只截取指定索引后左边第一个 '{' 和 右边第一个 '}' 。
本例也就处理一些较为简单的字符串,复杂的字符串估计还是正则表达式方便一些