java - 如何在第 n 次出现分隔符之前进行子字符串化?

标签 java string split

first;snd;3rd;4th;5th;6th;...

如何在第三次出现 ; 分隔符后拆分上面的内容?特别是不必 value.split(";") 将整个字符串作为数组,因为我不需要将值分开。只是字符串的第一部分,直到第 n 次出现。

期望的输出是: 第一;第二;第三。 我只需要将其作为字符串子字符串,而不是拆分分隔值。

最佳答案

使用StringUtils.ordinalIndexOf()来自 Apache

查找字符串中的第 n 个索引,处理 null。此方法使用 String.indexOf(String)。

参数:

str - the String to check, may be null

searchStr - the String to find, may be null

ordinal - the n-th searchStr to find

返回: 搜索字符串的第n个索引,如果没有匹配或空字符串输入则为-1(INDEX_NOT_FOUND)

this way, no libraries required :

public static int ordinalIndexOf(String str, String substr, int n) {
    int pos = str.indexOf(substr);
    while (--n > 0 && pos != -1)
        pos = str.indexOf(substr, pos + 1);
    return pos;
}

关于java - 如何在第 n 次出现分隔符之前进行子字符串化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53764906/

相关文章:

python - 使用 Python 解析和拆分 .txt 文件并导出为 .csv 行

python - 从 pandas 的字符串日期时间列中提取日期

java - 如何在同一个方法中执行两个不同的 ResultSet 对象

java - SimpleAdapter 具有两个不同颜色的自定义行

c++ - 用C++处理错误

javascript - split() js 最后一个数组项

java - 使用 JSF 的自定义组件

java - 如何在 Spring Boot 中手动配置 JdbcTemplate?

C++ 匿名字符串销毁时间

c++ - 如何在 C++ 中将符号字符串解析为 double 变量?