我有一个字符串行,其中代码(2个字符)和名称,以> 分隔。
例如CP >RENATO DE SA
,CP >FRAIS
。我想将此行与代码和名称成对。
我有此文本:
CT >RUSSO CT >JOSE AQUINO CP >RENATO DE SA CP >FRAIS CF >TAMARA STUCCHI CF >VANESSA JULKOWS CM >CRISTINA LOUSTA CM >HANS KROESCHEL CM >CONCEICAO MACIE CM >AIMEE FRARI CM >JONNY MOREIRA
所需结果:
CT, RUSSO
CT, JOSE AQUINO
CP, RENATO DE SA
CP, FRAIS
CF, TAMARA STUCCHI
CF, VANESSA JULKOWS
CM, CRISTINA LOUSTA
CM, HANS KROESCHEL
CM, CONCEICAO MACIE
CM, AIMEE FRARI
CM, JONNY MOREIRA
答案 0 :(得分:3)
您可以使用此正则表达式( (?=[A-Z]{2} >)| >)
import java.util.*
fun main(args: Array<String>) {
val input = "CT >RUSSO CT >JOSE AQUINO CP >RENATO DE SA CP >FRAIS ...";
val split = input.split("( (?=[A-Z]{2} >)| >)".toRegex())
for (i in split.indices step 2)
println(split[i] + ", " + split[i + 1])
}
输出
CT, RUSSO
CT, JOSE AQUINO
CP, RENATO DE SA
CP, FRAIS
CF, TAMARA STUCCHI
CF, VANESSA JULKOWS
CM, CRISTINA LOUSTA
CM, HANS KROESCHEL
CM, CONCEICAO MACIE
CM, AIMEE FRARI
CM, JONNY MOREIRA
您可以检查ideone demo
正则表达式将匹配两件事( (?=[A-Z]{2} >)| >)
(?=[A-Z]{2} >
空格,后跟两个大写字母,然后是一个空格和一个>
符号,但是我们需要两个大写字母,我们使用?=
正向超前|
或>
后面加一个>
符号的空格您可以检查regex demo here
答案 1 :(得分:0)
您可以不使用正则表达式:
replace(" >", ", ").replace(" ","\\n");
或(使用正则表达式)
replaceAll("\\s>", ", ").replaceAll("\\s","\\n");
答案 2 :(得分:0)
string.split("[÷+[-]]".toRegex()) 看这里我需要用 + ,div , - 分割字符串 你只需要将字符串转换为正则表达式 由于 - 是正则表达式中的特殊符号,我们需要将它包装起来
希望你也能以同样的方式解决你的问题