【问题标题】:Splitting String with delimiter用分隔符分割字符串
【发布时间】:2013-05-03 06:34:36
【问题描述】:

我目前正在尝试拆分字符串1128-2,以便我可以有两个单独的值。例如,value1: 1128 和 value2: 2,这样我就可以分别使用每个值。我试过split() 但没有成功。 Grails 是否有特定的处理方式或更好的方式?

【问题讨论】:

  • 我很好奇为什么这不适用于拆分? (a,b)="a-b".split("-") 对我来说很好用(而且我相信它也适用于 Java)。我用它所有的时间。编辑:只是看一下,它们略有不同——split 返回一个数组,而 tokenize 返回一个 ArrayList。在 Groovy 中几乎相同,拆分的优点是它可以轻松移植到 Java,我不认为 tokenize 是 String 上的 java 方法(除非它是一个相当新的方法,我错过了)

标签: string groovy split


【解决方案1】:

试试:

def (value1, value2) = '1128-2'.tokenize( '-' )

【讨论】:

【解决方案2】:

你怎么打电话给split?它的工作原理是这样的:

def values = '1182-2'.split('-')
assert values[0] == '1182'
assert values[1] == '2'

【讨论】:

  • 我认为添加一个边缘情况非常有用,您在用'.'分割时可能会遇到这种情况。字符。因此,如果要在文字点上拆分,则必须转义点:String extensionRemoved = filename.split("\\.")[0]; 否则,您将在正则表达式 . 上拆分,这意味着“任何字符”。请注意在正则表达式中创建单个反斜杠所需的双反斜杠。
【解决方案3】:

def (value1, value2) = '1128-2'.split('-') 应该可以工作。

任何人都可以在 Groovy 控制台中尝试一下吗?

def (v, z) =  '1128-2'.split('-')

assert v == '1128'
assert z == '2'

【讨论】:

  • 我对此有疑问,如果您想拆分某些类型的正则表达式字符,例如 .要么 *。您需要转义它,标记化也适用于这些情况。
【解决方案4】:

你也可以这样做:

Integer a = '1182-2'.split('-')[0] as Integer
Integer b = '1182-2'.split('-')[1] as Integer

//a=1182 b=2

【讨论】:

    【解决方案5】:

    split 在 groovy 中不是这样工作的。你必须使用标记化...

    查看文档:

    http://groovy-lang.org/gdk.html#split()

    【讨论】:

    • split其实很好,理解有误,请看下面,String[] split_Comma_ByProperty = Stringyouwanttosplit.split(",");
    【解决方案6】:
    dependencies {
       compile ('org.springframework.kafka:spring-kafka-test:2.2.7.RELEASE') { dep ->
         ['org.apache.kafka:kafka_2.11','org.apache.kafka:kafka-clients'].each { i ->
           def (g, m) = i.tokenize( ':' )
           dep.exclude group: g  , module: m
         }
       }
    }
    

    【讨论】:

    • 您好!虽然这段代码可以解决问题,including an explanation 解决问题的方式和原因确实有助于提高帖子的质量,并可能导致更多的赞成票。请记住,您正在为将来的读者回答问题,而不仅仅是现在提问的人。请edit您的回答添加解释并说明适用的限制和假设。
    猜你喜欢
    • 2021-06-12
    • 1970-01-01
    • 2013-11-24
    • 2013-08-16
    • 2020-07-04
    • 2011-09-12
    • 2017-07-08
    相关资源
    最近更新 更多