mirror of
https://gitee.com/chinabugotech/hutool.git
synced 2025-05-09 23:51:34 +08:00
add method
This commit is contained in:
parent
bcd773b85a
commit
3eaf4702f5
@ -7,6 +7,7 @@
|
|||||||
|
|
||||||
### 新特性
|
### 新特性
|
||||||
* 【extra 】 JschUtil增加execByShell方法(issue#I1CYES@Gitee)
|
* 【extra 】 JschUtil增加execByShell方法(issue#I1CYES@Gitee)
|
||||||
|
* 【core 】 StrUtil增加subBetweenAll方法,Console增加where和lineNumber方法(issue#812@Github)
|
||||||
|
|
||||||
### Bug修复
|
### Bug修复
|
||||||
* 【extra 】 修复SpringUtil使用devtools重启报错问题
|
* 【extra 】 修复SpringUtil使用devtools重启报错问题
|
||||||
|
@ -1968,50 +1968,27 @@ public class StrUtil {
|
|||||||
* StrUtil.subBetweenAll("[yabc[zy]abcz]", "[", "]"); = ["zy"] 重叠时只截取内部,
|
* StrUtil.subBetweenAll("[yabc[zy]abcz]", "[", "]"); = ["zy"] 重叠时只截取内部,
|
||||||
* </pre>
|
* </pre>
|
||||||
*
|
*
|
||||||
* @param str 被切割的字符串
|
* @param str 被切割的字符串
|
||||||
* @param prefix 截取开始的字符串标识
|
* @param prefix 截取开始的字符串标识
|
||||||
* @param suffix 截取到的字符串标识
|
* @param suffix 截取到的字符串标识
|
||||||
* @return 截取后的字符串
|
* @return 截取后的字符串
|
||||||
* @author dahuoyzs
|
* @author dahuoyzs
|
||||||
* @since 5.2.5
|
* @since 5.2.5
|
||||||
*/
|
*/
|
||||||
public static String[] subBetweenAll(CharSequence str, CharSequence prefix, CharSequence suffix) {
|
public static String[] subBetweenAll(CharSequence str, CharSequence prefix, CharSequence suffix) {
|
||||||
if(hasEmpty(str, prefix, suffix)) {
|
if (hasEmpty(str, prefix, suffix)) {
|
||||||
return new String[0];
|
return new String[0];
|
||||||
}
|
}
|
||||||
|
|
||||||
final int prefixCount = count(str, prefix);
|
final List<String> result = new LinkedList<>();
|
||||||
final int suffixCount = count(str, suffix);
|
for (String fragment : split(str, prefix)) {
|
||||||
if (prefixCount < 1 || suffixCount < 1) {
|
int suffixIndex = fragment.indexOf(suffix.toString());
|
||||||
return new String[0];
|
if (suffixIndex > 0) {
|
||||||
}
|
result.add(fragment.substring(0, suffixIndex));
|
||||||
|
|
||||||
LinkedList<String> betweenList = new LinkedList<>();
|
|
||||||
if (prefixCount > suffixCount) {
|
|
||||||
String[] fragments = split(str, suffix);
|
|
||||||
for (int i = 0; i < fragments.length - 1; i++) {
|
|
||||||
String fragment = fragments[i];
|
|
||||||
if (fragment.contains(prefix)) {
|
|
||||||
int beforeIndex = StrUtil.lastIndexOf(fragment, prefix, 0, false);
|
|
||||||
String between = fragment.substring(beforeIndex);
|
|
||||||
if (between.length() > 0)
|
|
||||||
betweenList.add(between);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
String[] fragments = split(str, prefix);
|
|
||||||
for (int i = 1; i < fragments.length; i++) {
|
|
||||||
String fragment = fragments[i];
|
|
||||||
if (fragment.contains(suffix)) {
|
|
||||||
int afterIndex = StrUtil.indexOf(fragment, suffix, 0, false);
|
|
||||||
String between = fragment.substring(0, afterIndex);
|
|
||||||
if (between.length() > 0)
|
|
||||||
betweenList.add(between);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return betweenList.toArray(new String[0]);
|
return result.toArray(new String[0]);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -426,6 +426,11 @@ public class StrUtilTest {
|
|||||||
public void subBetweenAllTest() {
|
public void subBetweenAllTest() {
|
||||||
Assert.assertArrayEquals(new String[]{"yz","abc"},StrUtil.subBetweenAll("saho[yz]fdsadp[abc]a","[","]"));
|
Assert.assertArrayEquals(new String[]{"yz","abc"},StrUtil.subBetweenAll("saho[yz]fdsadp[abc]a","[","]"));
|
||||||
Assert.assertArrayEquals(new String[]{"abc"}, StrUtil.subBetweenAll("saho[yzfdsadp[abc]a]","[","]"));
|
Assert.assertArrayEquals(new String[]{"abc"}, StrUtil.subBetweenAll("saho[yzfdsadp[abc]a]","[","]"));
|
||||||
|
Assert.assertArrayEquals(new String[]{"abc", "abc"}, StrUtil.subBetweenAll("yabczyabcz","y","z"));
|
||||||
|
Assert.assertArrayEquals(new String[0], StrUtil.subBetweenAll(null,"y","z"));
|
||||||
|
Assert.assertArrayEquals(new String[0], StrUtil.subBetweenAll("","y","z"));
|
||||||
|
Assert.assertArrayEquals(new String[0], StrUtil.subBetweenAll("abc",null,"z"));
|
||||||
|
Assert.assertArrayEquals(new String[0], StrUtil.subBetweenAll("abc","y",null));
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user