2013-05-21 88 views
3

任何人都可以请求帮助有关包含撇号的骆驼套管字符串,从而我不希望撇号后的下一个字母被置于大写。爪哇骆驼案例撇号问题

我的代码从txt文件中读取,然后相应地处理它。

例如 “马修SMITH”将被转换为“马修史密斯” 然而 “马修S'MITH”将被转换为“Matther S'Mith”时,它应该是“S'mith”

public static String toCamelCase(String tmp){ 
    Pattern p = Pattern.compile(CAMEL_CASE_REG_EXP); 
    Matcher m = p.matcher(tmp); 
    StringBuffer result = new StringBuffer(); 
    String word; 
    while (m.find()) 
    { 
     word = m.group(); 

        result.append(word.substring(0,1).toUpperCase()+word.substring(1).toLowerCase()); 

    } 
    return result.toString(); 
} 
public static final String CAMEL_CASE_REG_EXP = "([0-9]+)?([a-zA-Z]+)(\\')?(\\-)?(\\s)?"; 

在此先感谢。

+0

所以你其实想* * “奥康纳” 解析为 “奥康纳” 而不是 “奥康纳”?我知道想要“你好”解决“你是”的问题,但我想知道这是否更复杂一点 - 你需要一个温和的条件来确定何时适合在撇号后面加上大写,何时它不是。 – cabbagery

回答

1

尝试这个表达式

public static final String CAMEL_CASE_REG_EXP = "\\s*\\S+\\s*"; 

它产生

Matthew S'mith 
+0

谢谢Evgeniy,工作!非常感谢:) – user2404110

+0

不得不使用另一个if-else语句来确保它只用于包含撇号的字符串,例如“Jiminy Cricket”和“Lake Side Street”的一些名字正在改为“Jiminy cricket “和”湖边街“。 – user2404110