java - Java中拆分更复杂的字符串来获取数字

标签 java

我有一个给定的字符串,表示年龄,格式为:
“YY 年 MM 月”
“Y 年 MM 月”
“YY 年月月”
“年月月”
其中 YY/Y 代表年份(例如:5 或 44),MM/M 代表月份(例如:2 或 11)。为了清楚起见,我给出了 String pAge = "11 yr 5 mo"或 String pAge = "4 yr 10 mo"的示例。
现在我想分割这个字符串,并将其仅作为数字打印在两个单独的文本字段中,代表年龄和月份。 为了获得多年的时间,我编写了一个函数:

    String arr[] = pAge.split(" ", 2);
    return arr[0];

另一个获取月份的函数:

    int i = pAge.indexOf("yr", pAge.indexOf(" ") + 1);
    int k = pAge.indexOf(" ", pAge.indexOf(" ") + 4);
    String s = pAge.substring(i, k);
    return s.substring(s.lastIndexOf(" ") + 1);

所以,第一个方法看起来不错而且很简单,但是有没有更简单的方法来编写第二个函数?两者都工作良好并给出了正确的输出。

最佳答案

您给出的4个案例都是相同。它们全部由 4 个部分组成,并以空格分隔。

这意味着您可以对所有 4 种情况使用 .split():

String[] tokens = pAge.split(" ");
int years = Integer.parseInt(tokens[0]);  //get first token
int months = Integer.parseInt(tokens[2]);  //get third token

关于java - Java中拆分更复杂的字符串来获取数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41085900/

相关文章:

java - 如何在java中并行迭代集合?

javascript - HTML 单元由于某种原因无法找到表单。我怀疑是因为 angularJS 但不确定

java - Apache POI 在自动调整大小时并没有提供足够的空间

java - 在类里面硬编码设置不好吗?

java - 异常运行 clojure-1.9.0.jar : missing clojure/spec/alpha__init. 类和 clojure/spec/alpha.clj

java - 如何计算属于基于 ISO 的周数的天数

java - BufferedReader:将多行读入单个字符串

java - 字符串之间的区别

java - Android 应用程序 - 恢复线程

java - Android 缺少 android.net.StaticIpConfiguration。无法设置新实例或导入