【问题标题】:Get specific values from long String. in java [duplicate]从长字符串中获取特定值。在java中[重复]
【发布时间】:2018-01-02 18:53:09
【问题描述】:

我有一个很长的搅拌作为

String myStr = "PRODUCTION PERIOD 15 DAYS VALIDITY 30 DAYS TOTAL 2.117 BOXES VOLUME 231,78 m 3 NET WEİGHT 10.588,50 kg GROSS WEİGHT 11.700,00 kg"

我从一个 pdf 文件中读取了这个字符串。格式永远不会改变。但价值观正在发生变化。

我想得到 Validity = 30, Total : 2117 Net Wight : 10.588,50 etc. 粗体字在每个 pdf文件。

我不知道如何获得这些值。有任何帮助。

【问题讨论】:

  • 欢迎来到 Stack Overflow!请使用tour 并通读help center,尤其是How do I ask a good question? 做你的研究,search 以获取有关 SO 的相关主题,然后试一试。 如果您在进行更多研究和搜索后遇到困难并且无法摆脱困境,请发布您的尝试minimal reproducible example,并具体说明您遇到的问题。人们会很乐意提供帮助。祝你好运!
  • “格式从不改变。但值在改变。每个 pdf 文件的粗体字都在改变。” - 是哪一个?什么是固定的,什么不是,如果 you 可以看到计算机也可以看到的模式,只需实现 you 可以提取值的方式。也许“正则表达式”有用,还不知道。
  • "生产周期 15 天数有效期 30 天数总 2.117 盒子体积 231,78 m 3 NET WEİGHT 10.588,50 kg GROSS WEİGHT 11.700,00 kg" 粗体字变化
  • 一种解决方案是使用 string.split() [docs.oracle.com/javase/7/docs/api/java/lang/…
  • 您可以使用正则表达式捕获组。你需要自己研究一下。

标签: java string eclipse parsing


【解决方案1】:

您可以使用myStr.split() 方法,然后遍历单词。 例如:

    String myStr = "PRODUCTION PERIOD 15 DAYS VALIDITY 30 DAYS TOTAL 2.117 BOXES VOLUME 231,78 m 3 NET WEİGHT 10.588,50 kg GROSS WEİGHT 11.700,00 kg";
    String[] words = myStr.split(" ");
    for (int i = 0; i < words.length; i++){
        if (words[i].toLowerCase().equals("validity")){
            System.out.println("Validity is " + words[i + 1]);
        }

        if (words[i].toLowerCase().equals("total")){
            System.out.println("Total is " + words[i + 1]);
        }

        if (words[i].toLowerCase().equals("volume")){
            System.out.println("Volume is " + words[i + 1]);
        }
    }

输出:

Validity is 30
Total is 2.117
Volume is 231,78

【讨论】:

  • 不要喂帮助吸血鬼!看看他的问题。每一个低质量的“给我发代码”帮助吸血鬼问题!
  • 这取决于观点,我不认为他是一个吸血鬼,而是一个想要学习解决问题的新方法的初学者开发者
【解决方案2】:

您可以使用以下代码。尝试运行它,看看这是否是您正在寻找的。如果需要一次处理 1 个 pdf,您可以遍历 pdf 文件并执行此循环:

    String myStr = "PRODUCTION PERIOD 15 DAYS VALIDITY 30 DAYS TOTAL 2.117 BOXES VOLUME 231,78 m 3 NET WEIGHT 10.588,50 kg GROSS WEİGHT 11.700,00 kg";
    int idxValidity = myStr.indexOf("VALIDITY");
    int idxDays = myStr.indexOf("DAYS TOTAL");
    int idxTotal = myStr.indexOf("TOTAL");
    int idxBoxes = myStr.indexOf("BOXES");
    int idxWeight = myStr.indexOf("WEIGHT");
    int idxKg = myStr.indexOf("kg");

    System.out.println((myStr.substring(idxValidity, idxDays)).trim().replace(" ", "="));
    System.out.println(myStr.substring(idxTotal, idxBoxes).trim().replace(" ", "="));
    System.out.println(myStr.substring(idxWeight, idxKg).trim().replace(" ", "="));

【讨论】:

  • 不要喂帮助吸血鬼!看看他的问题。每一个低质量的“给我发代码”帮助吸血鬼问题!
猜你喜欢
  • 1970-01-01
  • 2019-10-08
  • 2019-02-22
  • 1970-01-01
  • 2016-02-28
  • 1970-01-01
  • 1970-01-01
  • 2019-02-20
  • 1970-01-01
相关资源
最近更新 更多