当前位置: 首页 > 知识库问答 >
问题:

从右方向开始的Java子字符串,直到特定字符[重复]

冯阳成
2023-03-14

我想从输入字符串中选择特定的子字符串:

String i = "example/test/foo-foo";

如何仅获取子字符串foo foo作为新字符串?

预期产出:

String newString = "foo-foo";

共有2个答案

慕容昊焜
2023-03-14

解决这个问题有很多选择。例如,通过regex搜索/替换或类String的子字符串方法。

正则表达式方法

Optional<String> resultA = Optional.of(string.replaceAll("^.*/([^/]+)$", "$1"));

子串方法:

int start = string.lastIndexOf('/');
Optional<String> resultB = Optional.of(start > 0 && start + 1 < string.length() ? string.substring(start) : null);

顺便说一句,对于这个问题,stackoverflow上有很多更详细的解决方案,所以您最好进行彻底的stackoverflow搜索。

郝昊天
2023-03-14

最好的方法是通过一个实用程序类,因为我们可以用这种方法重用代码。此外,可以处理一些特殊情况以避免运行时异常。

public class StringUtils {
    public static final String EMPTY = "";

    public static String substringAfterLast(String str, String separator) {
        if (isEmpty(str)) {
            return str;
        }
        if (isEmpty(separator)) {
            return EMPTY;
        }
        int pos = str.lastIndexOf(separator);
        if (pos == -1 || pos == (str.length() - separator.length())) {
            return EMPTY;
        }
        return str.substring(pos + separator.length());
    }

    public static boolean isEmpty(String str) {
        return str == null || str.length() == 0;
    }
}

然后使用、,

String newString=StringUtils。substringAfterLast(i,“/”)

 类似资料:
  • 我有一个字符串: 我想从中提取,即从右边的最后一个或第一个之后的子字符串。 有人能提供一些帮助吗?

  • 我有一个以下格式的Java字符串==ocid1。instancepool。oc1.iad。aaaaaaaa wq4bibigdvw6esvmbia4zhs7dkaposzkzxuvir2ajtfyciih45fa 我想提取第三个和第四个点之间的子串,即“iad”。实现这一点的最佳方式是什么?逻辑应该是通用的,并且应该适用于任何有四个点的字符串。

  • 问题内容: 我有一个字符串(基本上是遵循命名约定的文件名) 我想在第一个(即一个点)之前提取子字符串 在java doc api中,我似乎找不到在String中执行此操作的方法。 我想念什么吗?怎么做? 问题答案: 看看和。 确保检查的-1 。

  • 问题内容: 我需要从下面的变量值中删除括号“ [”和“]” ,并将结果存储在中。 使用,还是其他? 问题答案: 有几种可用的方法,有时可以使它们执行完全相同的任务,例如preg_replace / str_replace。但是,也许您只想从字符串的开头或结尾删除方括号;在这种情况下,preg_replace有效。但是,如果可能有多个括号,则preg_replace也可以完成这项工作。但是修剪更容易

  • 问题内容: 我知道如何将标准输出重定向到文件,但是我不知道如何将其重定向到字符串。 问题答案: 是的-您可以使用: 然后您可以使用获取字符串。 要指定编码(而不依赖平台定义的编码),请使用构造函数,然后 如果要还原为原始流,请使用:

  • 我已经尝试遍历字符串并手动替换它们,但计数是关闭的。我也尝试过使用列表、数组、stringbuilder等,但我无法使其工作: 我觉得必须有一种简单的方法来用子字符串替换字符串中的单个字符,而不必进行所有这些迭代。我说错了吗?