【问题标题】:Slice a string in groovy在 groovy 中切片字符串
【发布时间】:2011-08-25 07:11:39
【问题描述】:

我有一个 18 个字符的字符串,我想要 2-8 个字符。在 python 中我可以这样做:

sliceMe = "nnYYYYYYnnnnnnnnnn"
print sliceMe[2:8]

打印

YYYYYY

我正在寻找一种在 groovy 中做同样事情的方法,每个解释都非常长。在 groovy(或 java 中)中执行此操作的优雅接受方式是什么?

【问题讨论】:

    标签: java string groovy substring slice


    【解决方案1】:

    您从String 继承了所有Java 方法,所以sliceMe.substring(2,7) 应该可以解决问题。

    【讨论】:

    • 谢谢。在没有编程过 java 的情况下学习 groovy 让我走上了一些有趣的道路。
    • 既然如此,当你有一个关于如何在 Groovy 中对对象做某事的问题时,你可以随时查看 java 中的对象——groovy 对象添加了额外的方法,但 java 方法留下来。
    • 是的,我的问题是谷歌搜索不好,因为你会 Java 人不称它为切片 :(
    【解决方案2】:

    如果您不清楚 Python 与 Groovy(或其他语法)的编写方式,您可以比较“Programming Language Examples Alike Cookbook”字符串方法以供将来参考。

    这里是切片python字符串http://pleac.sourceforge.net/pleac_python/strings.html

    这里是切片 groovy 字符串:http://pleac.sourceforge.net/pleac_groovy/strings.html

    如果您需要查看其他比较,请查看目录,这是一个很好的参考。

    【讨论】:

    【解决方案3】:
    groovy:000> sliceMe = "nnYYYYYYnnnnnnnnnn"
    ===> nnYYYYYYnnnnnnnnnn
    groovy:000> sliceMe[2..7]
    ===> YYYYYY
    

    注意长度的差异减少了 1。

    【讨论】:

    • 或者sliceMe[2..<8],如果你想提供第一个要排除的字符的索引,就像在python中一样
    • "abcz".[1..-1] --> "bcz"; "abcz".[1..-2] --> "bc"
    • @你能解释一下为什么会这样吗?
    • @Torbilicious 字符串范围内的负索引从末尾开始。实际上,[1..-2] 表示“从索引 1 开始,然后从最后一个字符开始并向后移动到第二个字符”
    猜你喜欢
    • 2020-11-27
    • 2012-05-25
    • 1970-01-01
    • 1970-01-01
    • 2015-09-15
    • 2021-05-01
    • 2014-07-21
    • 2012-02-15
    • 1970-01-01
    相关资源
    最近更新 更多