mirror of
https://gitee.com/chinabugotech/hutool.git
synced 2025-05-09 23:51:34 +08:00
CharSequenceUtil类添加startWith,endWith,remove方法✒️
This commit is contained in:
parent
bc9ef1994b
commit
442d4bd854
@ -4,6 +4,7 @@ import cn.hutool.core.comparator.VersionComparator;
|
||||
import cn.hutool.core.convert.Convert;
|
||||
import cn.hutool.core.lang.Assert;
|
||||
import cn.hutool.core.lang.Filter;
|
||||
import cn.hutool.core.lang.PatternPool;
|
||||
import cn.hutool.core.lang.func.Func1;
|
||||
import cn.hutool.core.util.ArrayUtil;
|
||||
import cn.hutool.core.util.CharUtil;
|
||||
@ -765,6 +766,50 @@ public class CharSequenceUtil {
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* 字符串是否以(数字)开始
|
||||
*
|
||||
* @param str 字符串
|
||||
* @return 是否数字开始
|
||||
* @since 5.6.5
|
||||
*/
|
||||
public static boolean startWithNumber(CharSequence str) {
|
||||
return isNotBlank(str) && PatternPool.NUMBERS.matcher(str.subSequence(0, 1)).find();
|
||||
}
|
||||
|
||||
/**
|
||||
* 字符串是否以(英文字母 、数字和下划线)开始
|
||||
*
|
||||
* @param str 字符串
|
||||
* @return 是否英文字母 、数字和下划线开始
|
||||
* @since 5.6.5
|
||||
*/
|
||||
public static boolean startWithGeneral(CharSequence str) {
|
||||
return isNotBlank(str) && PatternPool.GENERAL.matcher(str.subSequence(0, 1)).find();
|
||||
}
|
||||
|
||||
/**
|
||||
* 字符串是否以(字母)开始
|
||||
*
|
||||
* @param str 字符串
|
||||
* @return 是否字母开始
|
||||
* @since 5.6.5
|
||||
*/
|
||||
public static boolean startWithWord(CharSequence str) {
|
||||
return isNotBlank(str) && PatternPool.WORD.matcher(str.subSequence(0, 1)).find();
|
||||
}
|
||||
|
||||
/**
|
||||
* 字符串是否以(中文汉字)开始
|
||||
*
|
||||
* @param str 字符串
|
||||
* @return 是否中文汉字开始
|
||||
* @since 5.6.5
|
||||
*/
|
||||
public static boolean startWithChinese(CharSequence str) {
|
||||
return isNotBlank(str) && PatternPool.CHINESES.matcher(str.subSequence(0, 1)).find();
|
||||
}
|
||||
|
||||
// ------------------------------------------------------------------------ endWith
|
||||
|
||||
/**
|
||||
@ -868,6 +913,50 @@ public class CharSequenceUtil {
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* 字符串是否以(数字)结束
|
||||
*
|
||||
* @param str 字符串
|
||||
* @return 是否数字结束
|
||||
* @since 5.6.5
|
||||
*/
|
||||
public static boolean endWithNumber(CharSequence str) {
|
||||
return isNotBlank(str) && PatternPool.NUMBERS.matcher(str.subSequence(str.length() - 1, str.length())).find();
|
||||
}
|
||||
|
||||
/**
|
||||
* 字符串是否以(英文字母 、数字和下划线)结束
|
||||
*
|
||||
* @param str 字符串
|
||||
* @return 是否英文字母 、数字和下划线结束
|
||||
* @since 5.6.5
|
||||
*/
|
||||
public static boolean endWithGeneral(CharSequence str) {
|
||||
return isNotBlank(str) && PatternPool.GENERAL.matcher(str.subSequence(str.length() - 1, str.length())).find();
|
||||
}
|
||||
|
||||
/**
|
||||
* 字符串是否以(字母)结束
|
||||
*
|
||||
* @param str 字符串
|
||||
* @return 是否字母结束
|
||||
* @since 5.6.5
|
||||
*/
|
||||
public static boolean endWithWord(CharSequence str) {
|
||||
return isNotBlank(str) && PatternPool.WORD.matcher(str.subSequence(str.length() - 1, str.length())).find();
|
||||
}
|
||||
|
||||
/**
|
||||
* 字符串是否以(中文汉字)结束
|
||||
*
|
||||
* @param str 字符串
|
||||
* @return 是否中文汉字结束
|
||||
* @since 5.6.5
|
||||
*/
|
||||
public static boolean endWithChinese(CharSequence str) {
|
||||
return isNotBlank(str) && PatternPool.CHINESES.matcher(str.subSequence(str.length() - 1, str.length())).find();
|
||||
}
|
||||
|
||||
// ------------------------------------------------------------------------ contains
|
||||
|
||||
/**
|
||||
@ -1505,6 +1594,28 @@ public class CharSequenceUtil {
|
||||
return str2;
|
||||
}
|
||||
|
||||
/**
|
||||
* 剔除/移除字符串中的所有数字
|
||||
*
|
||||
* @param str 当前字符串
|
||||
* @return 移除数字后的字符串
|
||||
* @since 5.6.5
|
||||
*/
|
||||
public static String removeNumbers(CharSequence str) {
|
||||
return ReUtil.delAll(PatternPool.NUMBERS, str);
|
||||
}
|
||||
|
||||
/**
|
||||
* 剔除/移除字符串中的所有中文
|
||||
*
|
||||
* @param str 当前字符串
|
||||
* @return 移除中文后的字符串
|
||||
* @since 5.6.5
|
||||
*/
|
||||
public static String removeChinese(CharSequence str) {
|
||||
return ReUtil.delAll(PatternPool.CHINESES, str);
|
||||
}
|
||||
|
||||
/**
|
||||
* 清理空白字符
|
||||
*
|
||||
|
@ -24,4 +24,127 @@ public class CharSequenceUtilTest {
|
||||
result = CharSequenceUtil.addSuffixIfNot(str, " is Good");
|
||||
Assert.assertEquals( str + " is Good", result);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void startWithNumberTest() throws Exception {
|
||||
String var1 = "123str";
|
||||
String var2 = "180公斤";
|
||||
String var3 = "str";
|
||||
String var4 = "身高180";
|
||||
Assert.assertTrue(CharSequenceUtil.startWithNumber(var1));
|
||||
Assert.assertTrue(CharSequenceUtil.startWithNumber(var2));
|
||||
Assert.assertFalse(CharSequenceUtil.startWithNumber(var3));
|
||||
Assert.assertFalse(CharSequenceUtil.startWithNumber(var4));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void startWithGeneralTest() throws Exception {
|
||||
String var1 = "str";
|
||||
String var2 = "123";
|
||||
String var3 = "_str";
|
||||
String var4 = "身高180";
|
||||
Assert.assertTrue(CharSequenceUtil.startWithGeneral(var1));
|
||||
Assert.assertTrue(CharSequenceUtil.startWithGeneral(var2));
|
||||
Assert.assertTrue(CharSequenceUtil.startWithGeneral(var3));
|
||||
Assert.assertFalse(CharSequenceUtil.startWithGeneral(var4));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void startWithWordTest() throws Exception {
|
||||
String var1 = "str";
|
||||
String var2 = "123";
|
||||
String var3 = "_str";
|
||||
String var4 = "身高180";
|
||||
Assert.assertTrue(CharSequenceUtil.startWithWord(var1));
|
||||
Assert.assertFalse(CharSequenceUtil.startWithWord(var2));
|
||||
Assert.assertFalse(CharSequenceUtil.startWithWord(var3));
|
||||
Assert.assertFalse(CharSequenceUtil.startWithWord(var4));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void startWithChineseTest() throws Exception {
|
||||
String var1 = "str";
|
||||
String var2 = "_str";
|
||||
String var3 = "123";
|
||||
String var4 = "身高180";
|
||||
Assert.assertFalse(CharSequenceUtil.startWithChinese(var1));
|
||||
Assert.assertFalse(CharSequenceUtil.startWithChinese(var2));
|
||||
Assert.assertFalse(CharSequenceUtil.startWithChinese(var3));
|
||||
Assert.assertTrue(CharSequenceUtil.startWithChinese(var4));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void endWithNumberTest() throws Exception {
|
||||
String var1 = "str123";
|
||||
String var2 = "身高180";
|
||||
String var3 = "str";
|
||||
String var4 = "180公斤";
|
||||
Assert.assertTrue(CharSequenceUtil.endWithNumber(var1));
|
||||
Assert.assertTrue(CharSequenceUtil.endWithNumber(var2));
|
||||
Assert.assertFalse(CharSequenceUtil.endWithNumber(var3));
|
||||
Assert.assertFalse(CharSequenceUtil.endWithNumber(var4));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void endWithGeneralTest() throws Exception {
|
||||
String var1 = "str";
|
||||
String var2 = "123";
|
||||
String var3 = "str_";
|
||||
String var4 = "180公斤";
|
||||
Assert.assertTrue(CharSequenceUtil.endWithGeneral(var1));
|
||||
Assert.assertTrue(CharSequenceUtil.endWithGeneral(var2));
|
||||
Assert.assertTrue(CharSequenceUtil.endWithGeneral(var3));
|
||||
Assert.assertFalse(CharSequenceUtil.endWithGeneral(var4));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void endWithWordTest() throws Exception {
|
||||
String var1 = "str";
|
||||
String var2 = "_str";
|
||||
String var3 = "123";
|
||||
String var4 = "身高180";
|
||||
Assert.assertTrue(CharSequenceUtil.endWithWord(var1));
|
||||
Assert.assertTrue(CharSequenceUtil.endWithWord(var2));
|
||||
Assert.assertFalse(CharSequenceUtil.endWithWord(var3));
|
||||
Assert.assertFalse(CharSequenceUtil.endWithWord(var4));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void endWithChineseTest() throws Exception {
|
||||
String var1 = "str";
|
||||
String var2 = "_str";
|
||||
String var3 = "123";
|
||||
String var4 = "180公斤";
|
||||
Assert.assertFalse(CharSequenceUtil.endWithChinese(var1));
|
||||
Assert.assertFalse(CharSequenceUtil.endWithChinese(var2));
|
||||
Assert.assertFalse(CharSequenceUtil.endWithChinese(var3));
|
||||
Assert.assertTrue(CharSequenceUtil.endWithChinese(var4));
|
||||
}
|
||||
|
||||
// ------------------------------------------------------------------------ remove
|
||||
|
||||
@Test
|
||||
public void removeNumbersTest(){
|
||||
String var1 = "";
|
||||
String var2 = "str";
|
||||
String var3 = "身高180";
|
||||
String var4 = "身高180体重180";
|
||||
Assert.assertEquals("", CharSequenceUtil.removeNumbers(var1));
|
||||
Assert.assertEquals("str", CharSequenceUtil.removeNumbers(var2));
|
||||
Assert.assertEquals("身高", CharSequenceUtil.removeNumbers(var3));
|
||||
Assert.assertEquals("身高体重", CharSequenceUtil.removeNumbers(var4));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void removeChineseTest(){
|
||||
String var1 = "";
|
||||
String var2 = "str";
|
||||
String var3 = "身高180";
|
||||
String var4 = "身高180体重180cm";
|
||||
Assert.assertEquals("", CharSequenceUtil.removeChinese(var1));
|
||||
Assert.assertEquals("str", CharSequenceUtil.removeChinese(var2));
|
||||
Assert.assertEquals("180", CharSequenceUtil.removeChinese(var3));
|
||||
Assert.assertEquals("180180cm", CharSequenceUtil.removeChinese(var4));
|
||||
}
|
||||
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user