如何将字符串拆分为两部分,没有分隔符,但第一部分是满足某个谓词的组,第二部分是其余部分(没有循环)?
我想在Java中处理字符串操作,并编写一个简单的程序,将单词转换为简化的piglatin版本。
所以规则集是
如果一个单词以辅音组开头,请将该组放在单词的末尾并添加“ay”,例如dog -> ogday
如果没有,请在此单词的末尾添加“way”,例如egg -> eggway
但是,如果在互联网上找到“在分隔符上拆分字符串”的各种示例,我发现没有“保留”分隔符。
在我最喜欢的语言haskell中,我会使用takeWhile
或用Parsec-library(Parser组合器)编写的小解析器。但是,由于我是java的新手,我查看了String,Scanner,Pattern的文档(虽然这对我来说仍然有点神秘)但我找不到合适的解决方案。
我知道我可以使用一个简单的for循环来做这个,但我宁愿有一个处理字符串操作/解析的库。那会是哪个图书馆?或者我必须等待Java8和所有漂亮的fold / lambda东西。
Oxford -> Oxfordway
,因为它以元音开头cyberpank -> erpankcybay
,因为它以prank -> ankpray
答案 0 :(得分:1)
你可以尝试这样的事情
s = s.replaceAll("^([qwrtpsdfghklzxcvbnm])(.+)", "$2$1ay")
s = s.replaceAll("^([eyuioa].+)", "$1way");