cn.hutool.core.util.StrUtil.sub()方法的使用及代码示例

x33g5p2x  于2022-01-30 转载在 其他  
字(9.6k)|赞(0)|评价(0)|浏览(1214)

本文整理了Java中cn.hutool.core.util.StrUtil.sub()方法的一些代码示例,展示了StrUtil.sub()的具体用法。这些代码示例主要来源于Github/Stackoverflow/Maven等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。StrUtil.sub()方法的具体详情如下:
包路径:cn.hutool.core.util.StrUtil
类名称:StrUtil
方法名:sub

StrUtil.sub介绍

[英]改进JDK subString
index从0开始计算,最后一个字符为-1
如果from和to位置一样,返回 ""
如果from或to为负数,则按照length从后向前数位置,如果绝对值大于字符串长度,则from归到0,to归到length
如果经过修正的index中from大于to,则互换from和to example:
abcdefgh 2 3 =》 c
abcdefgh 2 -3 =》 cde
[中]改进JDK子串
指数从0开始计算,最后一个字符为-1.
如果从…起和到位置一样,返回 ""
如果从…起或到为负数,则按照长从后向前数位置,如果绝对值大于字符串长度,则从…起归到0到归到长
如果经过修正的指数中从…起大于到则互换从…起和例如:
abcdefgh 2 3=》c
abcdefgh 2-3=”cde

代码示例

代码示例来源:origin: looly/hutool

/**
 * 切割指定位置之前部分的字符串
 * 
 * @param string 字符串
 * @param toIndex 切割到的位置(不包括)
 * @return 切割后的剩余的前半部分字符串
 */
public static String subPre(CharSequence string, int toIndex) {
  return sub(string, 0, toIndex);
}

代码示例来源:origin: looly/hutool

/**
 * 截取字符串,从指定位置开始,截取指定长度的字符串<br>
 * author weibaohui
 * 
 * @param input 原始字符串
 * @param fromIndex 开始的index,包括
 * @param length 要截取的长度
 * @return 截取后的字符串
 */
public static String subWithLength(String input, int fromIndex, int length) {
  return sub(input, fromIndex, fromIndex + length);
}

代码示例来源:origin: looly/hutool

/**
 * 截取字符串,从指定位置开始,截取指定长度的字符串<br>
 * author weibaohui
 * 
 * @param input 原始字符串
 * @param fromIndex 开始的index,包括
 * @param length 要截取的长度
 * @return 截取后的字符串
 */
public static String subWithLength(String input, int fromIndex, int length) {
  return sub(input, fromIndex, fromIndex + length);
}

代码示例来源:origin: looly/hutool

/**
 * 切割指定位置之前部分的字符串
 * 
 * @param string 字符串
 * @param toIndex 切割到的位置(不包括)
 * @return 切割后的剩余的前半部分字符串
 */
public static String subPre(CharSequence string, int toIndex) {
  return sub(string, 0, toIndex);
}

代码示例来源:origin: looly/hutool

/**
 * 切割指定位置之后部分的字符串
 * 
 * @param string 字符串
 * @param fromIndex 切割开始的位置(包括)
 * @return 切割后后剩余的后半部分字符串
 */
public static String subSuf(CharSequence string, int fromIndex) {
  if (isEmpty(string)) {
    return null;
  }
  return sub(string, fromIndex, string.length());
}

代码示例来源:origin: looly/hutool

/**
 * 切割指定位置之后部分的字符串
 * 
 * @param string 字符串
 * @param fromIndex 切割开始的位置(包括)
 * @return 切割后后剩余的后半部分字符串
 */
public static String subSuf(CharSequence string, int fromIndex) {
  if (isEmpty(string)) {
    return null;
  }
  return sub(string, fromIndex, string.length());
}

代码示例来源:origin: looly/hutool

/**
 * 去掉字符包装,如果未被包装则返回原字符串
 * 
 * @param str 字符串
 * @param prefix 前置字符串
 * @param suffix 后置字符串
 * @return 去掉包装字符的字符串
 * @since 4.0.1
 */
public static String unWrap(CharSequence str, String prefix, String suffix) {
  if (isWrap(str, prefix, suffix)) {
    return sub(str, prefix.length(), str.length() - suffix.length());
  }
  return str.toString();
}

代码示例来源:origin: looly/hutool

/**
 * 去掉字符包装,如果未被包装则返回原字符串
 * 
 * @param str 字符串
 * @param prefix 前置字符串
 * @param suffix 后置字符串
 * @return 去掉包装字符的字符串
 * @since 4.0.1
 */
public static String unWrap(CharSequence str, String prefix, String suffix) {
  if (isWrap(str, prefix, suffix)) {
    return sub(str, prefix.length(), str.length() - suffix.length());
  }
  return str.toString();
}

代码示例来源:origin: looly/hutool

/**
 * 限制字符串长度,如果超过指定长度,截取指定长度并在末尾加"..."
 * 
 * @param string 字符串
 * @param length 最大长度
 * @return 切割后的剩余的前半部分字符串+"..."
 * @since 4.0.10
 */
public static String maxLength(CharSequence string, int length) {
  Assert.isTrue(length > 0);
  if (null == string) {
    return null;
  }
  if (string.length() <= length) {
    return string.toString();
  }
  return sub(string, 0, length) + "...";
}

代码示例来源:origin: looly/hutool

/**
 * 限制字符串长度,如果超过指定长度,截取指定长度并在末尾加"..."
 * 
 * @param string 字符串
 * @param length 最大长度
 * @return 切割后的剩余的前半部分字符串+"..."
 * @since 4.0.10
 */
public static String maxLength(CharSequence string, int length) {
  Assert.isTrue(length > 0);
  if (null == string) {
    return null;
  }
  if (string.length() <= length) {
    return string.toString();
  }
  return sub(string, 0, length) + "...";
}

代码示例来源:origin: looly/hutool

/**
 * 切割指定长度的后部分的字符串
 * 
 * <pre>
 * StrUtil.subSufByLength("abcde", 3)      =    "cde"
 * StrUtil.subSufByLength("abcde", 0)      =    ""
 * StrUtil.subSufByLength("abcde", -5)     =    ""
 * StrUtil.subSufByLength("abcde", -1)     =    ""
 * StrUtil.subSufByLength("abcde", 5)       =    "abcde"
 * StrUtil.subSufByLength("abcde", 10)     =    "abcde"
 * StrUtil.subSufByLength(null, 3)               =    null
 * </pre>
 * 
 * @param string 字符串
 * @param length 切割长度
 * @return 切割后后剩余的后半部分字符串
 * @since 4.0.1
 */
public static String subSufByLength(CharSequence string, int length) {
  if (isEmpty(string)) {
    return null;
  }
  if (length <= 0) {
    return EMPTY;
  }
  return sub(string, -length, string.length());
}

代码示例来源:origin: looly/hutool

/**
 * 切割指定长度的后部分的字符串
 * 
 * <pre>
 * StrUtil.subSufByLength("abcde", 3)      =    "cde"
 * StrUtil.subSufByLength("abcde", 0)      =    ""
 * StrUtil.subSufByLength("abcde", -5)     =    ""
 * StrUtil.subSufByLength("abcde", -1)     =    ""
 * StrUtil.subSufByLength("abcde", 5)       =    "abcde"
 * StrUtil.subSufByLength("abcde", 10)     =    "abcde"
 * StrUtil.subSufByLength(null, 3)               =    null
 * </pre>
 * 
 * @param string 字符串
 * @param length 切割长度
 * @return 切割后后剩余的后半部分字符串
 * @since 4.0.1
 */
public static String subSufByLength(CharSequence string, int length) {
  if (isEmpty(string)) {
    return null;
  }
  if (length <= 0) {
    return EMPTY;
  }
  return sub(string, -length, string.length());
}

代码示例来源:origin: looly/hutool

/**
 * 补充字符串以满足最小长度
 * 
 * <pre>
 * StrUtil.padAfter(null, *, *);//null
 * StrUtil.padAfter("1", 3, '0');//"100"
 * StrUtil.padAfter("123", 2, '0');//"23"
 * </pre>
 * 
 * @param str 字符串,如果为<code>null</code>,按照空串处理
 * @param minLength 最小长度
 * @param padChar 补充的字符
 * @return 补充后的字符串
 */
public static String padAfter(CharSequence str, int minLength, char padChar) {
  if (null == str) {
    return null;
  }
  final int strLen = str.length();
  if (strLen == minLength) {
    return str.toString();
  } else if (strLen > minLength) {
    return sub(str, strLen - minLength, strLen);
  }
  return str.toString().concat(repeat(padChar, minLength - strLen));
}

代码示例来源:origin: looly/hutool

/**
 * 去掉字符包装,如果未被包装则返回原字符串
 * 
 * @param str 字符串
 * @param prefix 前置字符
 * @param suffix 后置字符
 * @return 去掉包装字符的字符串
 * @since 4.0.1
 */
public static String unWrap(CharSequence str, char prefix, char suffix) {
  if (isEmpty(str)) {
    return str(str);
  }
  if (str.charAt(0) == prefix && str.charAt(str.length() - 1) == suffix) {
    return sub(str, 1, str.length() - 1);
  }
  return str.toString();
}

代码示例来源:origin: looly/hutool

/**
 * 去掉字符包装,如果未被包装则返回原字符串
 * 
 * @param str 字符串
 * @param prefix 前置字符
 * @param suffix 后置字符
 * @return 去掉包装字符的字符串
 * @since 4.0.1
 */
public static String unWrap(CharSequence str, char prefix, char suffix) {
  if (isEmpty(str)) {
    return str(str);
  }
  if (str.charAt(0) == prefix && str.charAt(str.length() - 1) == suffix) {
    return sub(str, 1, str.length() - 1);
  }
  return str.toString();
}

代码示例来源:origin: looly/hutool

/**
 * 补充字符串以满足最小长度
 * 
 * <pre>
 * StrUtil.padAfter(null, *, *);//null
 * StrUtil.padAfter("1", 3, '0');//"100"
 * StrUtil.padAfter("123", 2, '0');//"23"
 * </pre>
 * 
 * @param str 字符串,如果为<code>null</code>,按照空串处理
 * @param minLength 最小长度
 * @param padChar 补充的字符
 * @return 补充后的字符串
 */
public static String padAfter(CharSequence str, int minLength, char padChar) {
  if (null == str) {
    return null;
  }
  final int strLen = str.length();
  if (strLen == minLength) {
    return str.toString();
  } else if (strLen > minLength) {
    return sub(str, strLen - minLength, strLen);
  }
  return str.toString().concat(repeat(padChar, minLength - strLen));
}

代码示例来源:origin: looly/hutool

/**
 * 删除正则匹配到的内容之前的字符 如果没有找到,则返回原文
 * 
 * @param regex 定位正则
 * @param content 被查找的内容
 * @return 删除前缀后的新内容
 */
public static String delPre(String regex, CharSequence content) {
  if (null == content || null == regex) {
    return StrUtil.str(content);
  }
  // Pattern pattern = Pattern.compile(regex, Pattern.DOTALL);
  final Pattern pattern = PatternPool.get(regex, Pattern.DOTALL);
  Matcher matcher = pattern.matcher(content);
  if (matcher.find()) {
    return StrUtil.sub(content, matcher.end(), content.length());
  }
  return StrUtil.str(content);
}

代码示例来源:origin: looly/hutool

/**
 * 删除正则匹配到的内容之前的字符 如果没有找到,则返回原文
 * 
 * @param regex 定位正则
 * @param content 被查找的内容
 * @return 删除前缀后的新内容
 */
public static String delPre(String regex, CharSequence content) {
  if (null == content || null == regex) {
    return StrUtil.str(content);
  }
  // Pattern pattern = Pattern.compile(regex, Pattern.DOTALL);
  final Pattern pattern = PatternPool.get(regex, Pattern.DOTALL);
  Matcher matcher = pattern.matcher(content);
  if (matcher.find()) {
    return StrUtil.sub(content, matcher.end(), content.length());
  }
  return StrUtil.str(content);
}

代码示例来源:origin: looly/hutool

/**
 * 从content中匹配出多个值并根据template生成新的字符串<br>
 * 匹配结束后会删除匹配内容之前的内容(包括匹配内容)<br>
 * 例如:<br>
 * content 2013年5月 pattern (.*?)年(.*?)月 template: $1-$2 return 2013-5
 * 
 * @param pattern 匹配正则
 * @param contentHolder 被匹配的内容的Holder,value为内容正文,经过这个方法的原文将被去掉匹配之前的内容
 * @param template 生成内容模板,变量 $1 表示group1的内容,以此类推
 * @return 新字符串
 */
public static String extractMultiAndDelPre(Pattern pattern, Holder<CharSequence> contentHolder, String template) {
  if (null == contentHolder || null == pattern || null == template) {
    return null;
  }
  HashSet<String> varNums = findAll(PatternPool.GROUP_VAR, template, 1, new HashSet<String>());
  final CharSequence content = contentHolder.get();
  Matcher matcher = pattern.matcher(content);
  if (matcher.find()) {
    for (String var : varNums) {
      int group = Integer.parseInt(var);
      template = template.replace("$" + var, matcher.group(group));
    }
    contentHolder.set(StrUtil.sub(content, matcher.end(), content.length()));
    return template;
  }
  return null;
}

代码示例来源:origin: looly/hutool

/**
 * 从content中匹配出多个值并根据template生成新的字符串<br>
 * 匹配结束后会删除匹配内容之前的内容(包括匹配内容)<br>
 * 例如:<br>
 * content 2013年5月 pattern (.*?)年(.*?)月 template: $1-$2 return 2013-5
 * 
 * @param pattern 匹配正则
 * @param contentHolder 被匹配的内容的Holder,value为内容正文,经过这个方法的原文将被去掉匹配之前的内容
 * @param template 生成内容模板,变量 $1 表示group1的内容,以此类推
 * @return 新字符串
 */
public static String extractMultiAndDelPre(Pattern pattern, Holder<CharSequence> contentHolder, String template) {
  if (null == contentHolder || null == pattern || null == template) {
    return null;
  }
  HashSet<String> varNums = findAll(PatternPool.GROUP_VAR, template, 1, new HashSet<String>());
  final CharSequence content = contentHolder.get();
  Matcher matcher = pattern.matcher(content);
  if (matcher.find()) {
    for (String var : varNums) {
      int group = Integer.parseInt(var);
      template = template.replace("$" + var, matcher.group(group));
    }
    contentHolder.set(StrUtil.sub(content, matcher.end(), content.length()));
    return template;
  }
  return null;
}

相关文章

微信公众号

最新文章

更多

StrUtil类方法