Java 我想过滤掉字符串中的最后一个数字

Java 我想过滤掉字符串中的最后一个数字,java,Java,我的绳子是 “成功条目和失败条目:{Failed_Entries={}, 成功{123=1509170142065114105}” 这里我只想过滤掉1509170142065114105这里的这个字符串123可以是任何东西 如何操作?您可以使用正则表达式*(?:\\D |^)(\\D+).*获取字符串中的最后一个数字 String s = "{FAILED_ENTRIES={}, SUCCESS_ENTRIES={123=1509170142065114105}}"; int l

我的绳子是

“成功条目和失败条目:{Failed_Entries={}, 成功{123=1509170142065114105}”

这里我只想过滤掉1509170142065114105这里的这个字符串123可以是任何东西

如何操作?

您可以使用正则表达式
*(?:\\D |^)(\\D+).*
获取
字符串中的最后一个数字

    String s = "{FAILED_ENTRIES={}, SUCCESS_ENTRIES={123=1509170142065114105}}";
    int lastEqualIndex = s.lastIndexOf("=");

    String lastNumber = s.substring(lastEqualIndex + 1, s.length() - 2);
    System.out.println(lastNumber);
使用:

public static void main(String[] args) {
    String s = "{FAILED_ENTRIES={}, SUCCESS_ENTRIES={123=1509170142065114105}}";
    System.out.println(s.replaceAll(".*(?:\\D|^)(\\d+).*", "$1"));
}
1509170142065114105
输出:

public static void main(String[] args) {
    String s = "{FAILED_ENTRIES={}, SUCCESS_ENTRIES={123=1509170142065114105}}";
    System.out.println(s.replaceAll(".*(?:\\D|^)(\\d+).*", "$1"));
}
1509170142065114105
演示:

public static void main(String[] args) {
    String s = "{FAILED_ENTRIES={}, SUCCESS_ENTRIES={123=1509170142065114105}}";
    System.out.println(s.replaceAll(".*(?:\\D|^)(\\d+).*", "$1"));
}
1509170142065114105

.

正则表达式适用于您

public static void main(String args[]) {
    String s = "{FAILED_ENTRIES={}, SUCCESS_ENTRIES={123=1509170142065114105}}";
    System.out.println(s.replaceAll(".*=(\\d+).*", "$1"));
}
O/p:


如果所有字符串的格式相同,则可以使用
lastIndexOf
substring

    String s = "{FAILED_ENTRIES={}, SUCCESS_ENTRIES={123=1509170142065114105}}";
    int lastEqualIndex = s.lastIndexOf("=");

    String lastNumber = s.substring(lastEqualIndex + 1, s.length() - 2);
    System.out.println(lastNumber);
输出
1509170142065114105


如果你的sting格式可以不同,那么@Jordi Castilla发布的
regex
解决方案应该更好。

至少展示一下你的做法,这似乎不是一个严格的逻辑,展示一下你的代码你可以为我推荐这个字符串“成功条目和失败条目:{Failed_Entries={},Success_Entries={123=1509180522720153332,124=1509181140480153332}“@KamleshKanazariya预期的输出是什么?.123=?或124=?我想从这个String@KamleshKanazariya-试试这个==>
System.out.println(s.replaceAll(“*?=(\\d+).*”,“$1”));
我只能看到一个成功条目1509180522720153332,而不是第二个1509181140480153332。我希望两个成功条目都出现在字符串列表中