java和javascript中实现ucwords

xiaoxiao2024-10-26  9

学习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取的值并没变
转载请注明原文地址: https://www.6miu.com/read-5018600.html

最新回复(0)