java和javascript中实现ucwords

学习PHP的过程中发现了函数ucwords()方法,一想java中好像没有类似的方法。于是觉得自己动手实现一下。
开始是这样写的
public static String capitalize(String str) {
String[] words = str.toLowerCase().split(" ");
StringBuffer sb = new StringBuffer();
for (String word : words) {
String newword = word.replace(word.substring(0, 1), word.substring(0, 1).toUpperCase());
sb.append(newword).append(" ");
}
return sb.toString();
}

写完一测试就发现问题了,对于java中的replace方法是[b] 使用指定的字面值替换序列替换此字符串匹配字面值目标序列的每个子字符串[/b]
于是对于"I llove you"字符串就会出现问题.
思考了一下,将上面的方法改成了
public static String capitalize(String str) {
String[] words = str.toLowerCase().split(" ");
StringBuffer sb = new StringBuffer();
for (String word : words) {
/*String newword = word.replace(word.substring(0, 1), word.substring(0, 1).toUpperCase());
sb.append(newword).append(" ");*/

char[] chs = word.toCharArray();
chs[0]=(char)(chs[0]-32);

String newWord = new String(chs);
sb.append(newWord).append(" ");

}

return sb.toString();
}


写完java的后,有想了一下javascript中的实现方法

function capitalize(str) {
var words = str.split(" ");
for (var word in words) {
//words[word] = words[word].replace(words[word].substr(0, 1), words[word].substr(0, 1).toUpperCase());
words[word] = words[word].substring(0,1).toUpperCase()+words[word].substring(1);
}

return words.join(" ");
}

另外奇怪的是,javascript中用我注释掉的代码也能实现。查了下资料,才知道javascript中的replace()方法是
字符串 stringObject 的 replace() 方法执行的是查找并替换的操作。它将在 stringObject 中查找与 regexp 相匹配的子字符串,然后用 replacement 来替换这些子串。如果 regexp 具有全局标志 g,那么 replace() 方法将替换所有匹配的子串。否则,它只替换第一个匹配子串。
同时还得到另一个实现方式:

name = 'aaa bbb ccc';
uw=name.replace(/\b\w+\b/g, function(word){
return word.substring(0,1).toUpperCase()+word.substring(1);}
);

以及css对文本的转换

input.cap {text-transform: capitalize;}

但是css只是显示效果变了,但通过value取的值并没变
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值