【问题标题】:How to read numbers after followed by particular Character of a string using Java Android?如何使用Java Android在字符串的特定字符后读取数字?
【发布时间】:2016-06-20 12:25:10
【问题描述】:
String str = "[amt is E234.98.valid 23/12/2013.Sample text]"

如何从上述示例字符串中仅读取字符“E”之后的金额值。

【问题讨论】:

  • 把变量“str”的所有可能输入值,得出一个可以拆分字符串的逻辑。除了我怀疑是否有任何 api 存在。
  • 如果值后面的文本总是“有效”,那么答案是正确的,如果不是,您将编辑您的问题以更具体地了解可能性。

标签: java android string stringreader


【解决方案1】:

您可以使用正则表达式和匹配组来提取您需要的内容。

代码更新:

拨打ParseWithRegexp.testIt()使用

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class ParseWithRegexp {
    static String str = "[amt is E234.98.valid 23/12/2013.Sample text  E134.95.valid 23/12/2015]";
    public static void testIt() {
        Pattern p = Pattern.compile("E([0-9.]+)\\.valid");
        Matcher m = p.matcher(str);
        while (m.find()) {
            System.out.println("found: "+m.group(1));
        }
    }
}

更新: 您可以对正则表达式更加严格,例如: "E([0-9]+\\.[0-9]+)"

【讨论】:

  • 我无法编译您上面的代码...我尝试使用 Android Studio 运行此代码,它要求我在构建时导入这些库,gradle file compile 'org.hamcrest:hamcrest- core:1.3' compile 'org.jetbrains:annotations-java5:15.0' 在包含这两个库之后我已经从下面的包中导入了这两个东西 import org.hamcrest.Matcher;导入 org.intellij.lang.annotations.Pattern;但即使我无法编译源代码请建议
  • 就像你说的,我从 import java.util.regex.Pattern 导入了 Pattern;包。
  • 你能告诉我从哪个包中导入“Matcher”吗?
  • 我正在使用来自 java rt 的java.util.regex
  • 您可以根据需要修改正则表达式。我想表明你可以匹配之前和之后的东西。查看我的更新。
【解决方案2】:

你可以使用String中的indexOf()方法,例如:

如果您只想要粗体,并且如果您的号码中必须有一个点:

String str = "[amt is E234.98.valid 23/12/2013.Sample text]";

这样做:

String str = "whatever E2024.1.E";

///Start from the first character after "E"
int startPos = str.indexOf("E") + 1;

///Start from startPos
int dotPos = str.indexOf(".", startPos);

///Start from the first character after dotPos
int endPos = str.indexOf(".", dotPos + 1);

///return the result
return str.substring(startPos, endPos);

否则,如果您只想要第一个点之前的数字,请执行以下操作:

String str = "whatever E2024.1.E";

///Start from the first character after "E"
int startPos = str.indexOf("E") + 1;

///Start from the first character after startPos
int endPos = str.indexOf(".", startPos+ 1);

///return the result
return str.substring(startPos, endPos);

唯一的区别是,如果你必须有一个点,那么你必须检查它的位置并从它开始。

【讨论】:

    猜你喜欢
    • 2012-09-07
    • 1970-01-01
    • 2023-03-23
    • 2021-11-18
    • 2011-10-29
    • 2018-10-26
    • 1970-01-01
    • 2012-09-16
    相关资源
    最近更新 更多