我想用连续出现的大写字母连接令牌 例如:
Mr. Harry Potter going to school
然后输出应该是:
Mr. Harry-Potter going to school.
需要连续使用大写字母对所有令牌开始。 除了以下正则表达式模式
像其他一些中央政府的太阳一样,它应该是太阳的中央政府。
我的代码是:
public class Capitalize {
static String str="mr. Harry Potter is going to school";
StringBuffer regex = new StringBuffer("Eco[\\.]|Gr[\\.]|Emp[\\.]|Rs[\\.]|Ms[\\.]|No[\\.]|Nos[\\.]|Dt[\\.]|Sh[\\.]|Mr[\\.]|Mrs[\\.]|Admn[\\.]|Ad[\\.]|Smt[\\.]|GOVT[\\.]|Govt[\\.]|Deptt[\\.]|Tel[\\.]|Secy[\\.]|Estt[\\.]|Asstt[\\.]|Hqrs[\\.]|DY[\\.]|Supdt[\\.]|w[\\.]e[\\.]f[\\.]|&I[\\.]|N[\\.]|[0-9]+[\\.][0-9]+[\\.]");
StringBuffer sb=new StringBuffer();
public void show()
{
StringTokenizer strtkn=new StringTokenizer(str);
while (strtkn.hasMoreTokens()) {
String str1=strtkn.nextToken();
if(Character.isUpperCase(str1.charAt(0)))
{
sb.append(str1+"-");
}
sb.append(str1+" ");
System.out.println(sb.toString());
}
System.out.println("Final :" +sb.toString());
}
正在提供此输出
Final :mr. Harry-Harry Potter-Potter is going to school
but i want this output
mr. Harry-Potter is going to school
我也想忽略:
StringBuffer regex = new StringBuffer("Eco[\\.]|Gr[\\.]|Emp[\\.]|Rs[\\.]|Ms[\\.]|No[\\.]|Nos[\\.]|Dt[\\.]|Sh[\\.]|Mr[\\.]|Mrs[\\.]|Admn[\\.]|Ad[\\.]...... values if they come into string.
请建议解决我的问题。
答案 0 :(得分:1)
这是一个简单的单行解决方案:
str = str.replaceAll("(\\b[A-Z][a-z]+) (?=[A-Z][a-z]+)", "$1-");
答案 1 :(得分:0)