【问题标题】:Java Camel case apostrophe issueJava Camel大小写撇号问题
【发布时间】:2013-05-21 05:30:10
【问题描述】:

任何人都可以就包含撇号的驼峰式字符串提供帮助,因此我不希望撇号后面的下一个字母大写。

我的代码从一个 txt 文件中读取,然后进行相应的处理。

例如 “MATTHEW SMITH”将转换为“Matthew Smith” 然而 “MATTHEW S'MITH”应该是“S'mith”时会被转换为“Matther 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)?";

提前致谢。

【问题讨论】:

  • 所以您实际上想要“O'CONNOR”解析为“O'connor”而不是“O'Connor”?我理解希望 "YOU'RE" 解析为 "You're",但我想知道这是否有点复杂——您需要一个温和的条件来确定何时适合在撇号后大写,以及何时它不是。

标签: java regex case camelcasing


【解决方案1】:

试试这个正则表达式

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

它产生

Matthew S'mith

【讨论】:

  • 必须使用另一个 if-else 语句来确保它只对包含撇号的字符串执行此操作,例如“Jiminy Cricket”和“Lake Side Street”被更改为“Jiminy cricket”和“Lake side Street”。
猜你喜欢
  • 2023-03-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-28
  • 2010-11-18
  • 1970-01-01
相关资源
最近更新 更多