【问题标题】:Java specific substringJava 特定子字符串
【发布时间】:2015-04-06 17:33:53
【问题描述】:

我有以下形式的字符串:

1x Intel Celeron G1850*

如何获得仅包含“Intel Celeron G1850”的子字符串? - 我正在考虑将 x 和 * 分开

【问题讨论】:

  • 您正在考虑的解决方案有什么问题?
  • 我同意。使用 substring() 方法。这样做没有错。
  • 答案就在问题中。请标记问题已关闭。
  • 不知道怎么拆分?此外,x 和 * 之间的 CPU 名称可以是可变长度的。这就是为什么我不使用简单的 substring(start,end);
  • 检查我处理可变长度的答案

标签: java string substring


【解决方案1】:

此答案将处理1x 的可变长度。我假设每条记录的单位数中没有 x 字符。我也假设每条记录的格式相同

str.substring(str.indexOf('x') + 2);

这将获取所有内容包括和之后x 的索引位置以及 2 个索引,将其放置在空格之后的第一个字母上。

1x Intel Celeron G1850

会导致

Intel Celeron G1850

这个:

1000x Intel Celeron G1850

结果相同

【讨论】:

    【解决方案2】:

    如果你想为这个(或很少的)字符串做这件事,你的方法绝对没问题。 “大众明智”是编译一个“RegExp”并匹配你的(统一和许多)字符串。

    像这样:

        Pattern pattern = Pattern.compile("^\\d+x (.+)\\*$");
        Matcher matcher = pattern.matcher("1x Intel Celeron G1850*");
        if (matcher.matches()) {
            System.out.println(matcher.group(1));
        }
    

    【讨论】:

    • 谢谢 :) 我可以使用 Faraj 更简单的答案,但我会定义。也看看这个有趣的方法:)
    【解决方案3】:

    子字符串是一个不错的选择。不是分裂。因为复杂。

    String str = "1x Intel Celeron G1850*";
    str.substring(str.indexOf("x"), str.length() -1)
    

    【讨论】:

    • 非常感谢。
    • 此答案不起作用,因为您自己的评论@CasperTL:1x 可以是可变长度的。如果这是 1000x 并且您使用索引 3 作为常数会发生什么?这个答案并不普遍
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-04-10
    • 2012-12-28
    • 1970-01-01
    • 2015-12-18
    • 1970-01-01
    • 2017-02-25
    相关资源
    最近更新 更多