如何从字符串

时间:2016-07-21 10:39:34

标签: regex string groovy character special-characters

我有一种情况,我想从给定的字符串中获取分隔符char,如下所示: -

String str1 = "saurabh|om|anurag|abhishek|jitendra"

String str2 = "amit,ankur,sumit,aniket,suheel"

String str3 = "aj-kumar-manav-lalit-gaurav"

-------

在上面的字符串中,我希望将分隔符char作为: -

String separatorStr1 = "|"
String separatorStr2 = ","
String separatorStr3 = "-"

注意: - 分隔符字符串在字符串中始终为非字母

有没有办法实现这一目标。

3 个答案:

答案 0 :(得分:3)

使用groovy regexpfind([^ \ w]是任何非字母数字字符)

def getSeparator = { str ->
    str.find(~/[^\w]/)
}

String str1 = "saurabh|om|anurag|abhishek|jitendra"
String str2 = "amit,ankur,sumit,aniket,suheel"
String str3 = "aj-kumar-manav-lalit-gaurav"

assert getSeparator(str1) == '|'
assert getSeparator(str2) == ','
assert getSeparator(str3) == '-'

答案 1 :(得分:1)

为什么-的{​​{1}}分隔符?它也可以是str3

假设分隔符必须是非字母循环字符,并查找第一个非字母字符。

在未来的问题中,尽量避免其他用户猜测你的意思 - 尝试定义主题的主题。

答案 2 :(得分:1)

xenteros建议我通过以下方式实现了这一目标: -

String str1 = "saurabh|om|anurag|abhishek|jitendra"
String str2 = "amit,ankur,sumit,aniket,suheel"
String str3 = "aj-kumar-manav-lalit-gaurav"

String separatorStr1 = str1.toCharArray().find { !Character.isLetterOrDigit(it) }
String separatorStr2 = str2.toCharArray().find { !Character.isLetterOrDigit(it) }
String separatorStr3 = str3.toCharArray().find { !Character.isLetterOrDigit(it) }

assert separatorStr1 == '|'
assert separatorStr2 == ','
assert separatorStr3 == '-'