String a ="i am a boy";
String[] b =a.split("\\s+");
StringBuffer sb =new StringBuffer();
for (int i=0;i<b.length;i++){
sb.append(String.valueOf(b[i].charAt(0)).toUpperCase()+b[i].substring(1)+" ");
}
System.out.println(sb);为什么底下这个不行,希望有人指点
System.out.println(sa.replaceAll("\\b(\\w)","$1qq".toUpperCase()));
String[] b =a.split("\\s+");
StringBuffer sb =new StringBuffer();
for (int i=0;i<b.length;i++){
sb.append(String.valueOf(b[i].charAt(0)).toUpperCase()+b[i].substring(1)+" ");
}
System.out.println(sb);为什么底下这个不行,希望有人指点
System.out.println(sa.replaceAll("\\b(\\w)","$1qq".toUpperCase()));
WordUtils.capitalize(str)
WordUtils.capitalizeFully("fOO BAr"); // Foo Bar
import java.util.*;public class Capitalize {
public static void main(String[] args) {
System.out.println(Arrays.stream("foo bar".split("\\s+")).map(Capitalize::capitalize).collect(Collectors.joining(" ")));
System.out.println(Arrays.stream("fOO BAR".split("\\s+")).map(Capitalize::capitalizeFully).collect(Collectors.joining(" ")));
}
public static String capitalize(String input){
return Character.toUpperCase(input.charAt(0)) + input.substring(1);
}
public static String capitalizeFully(String input){
return Character.toUpperCase(input.charAt(0)) + input.substring(1).toLowerCase();
}
}
很想知道2楼主那个问题的答案
StringBuffer buf = new StringBuffer();
String str = "im a big"; Pattern p = Pattern.compile("\\b\\w");
Matcher m = p.matcher(str);
while (m.find()) {
m.appendReplacement(buf, m.group().toUpperCase());
}
m.appendTail(buf);
System.out.println(buf);
import java.util.regex.Pattern;public class Capitalize
{
private static final Pattern pattern = Pattern.compile("\\w+");
private static String capitalize(final String input)
{
return Character.toUpperCase(input.charAt(0)) + input.substring(1);
}
private static String capitalizeFully(final String input)
{
return Character.toUpperCase(input.charAt(0)) + input.substring(1).toLowerCase();
}
public static String capitalizeText(final String text)
{
final Matcher matcher = pattern.matcher(text);
final StringBuffer builder = new StringBuffer(text.length());
while (matcher.find())
{
matcher.appendReplacement(builder, capitalize(matcher.group()));
}
matcher.appendTail(builder);
return builder.toString();
}
public static String capitalizeTextFully(final String text)
{
final Matcher matcher = pattern.matcher(text);
final StringBuffer builder = new StringBuffer(text.length());
while (matcher.find())
{
matcher.appendReplacement(builder, capitalizeFully(matcher.group()));
}
matcher.appendTail(builder);
return builder.toString();
}
/**
* @param args
*/
public static void main(final String[] args)
{
System.out.println(capitalizeText("foo bar"));
System.out.println(capitalizeTextFully("fOO BAr"));
}
}
System.out.println(sa.replaceAll("\\b(\\w)","$1QQ"));
System.out.println(sa.replaceAll("\\b(\\w)","$1QQ"));好像没有回答到关键点啊3的意思 估计是问 为什么 $1 已经返回了第二组,为什么就不是能转换为大写
System.out.println(sa.replaceAll("\\b(\\w)","$1QQ"));好像没有回答到关键点啊3的意思 估计是问 为什么 $1 已经返回了第二组,为什么就不是能转换为大写
这么明显的问题,怎么就想不通?
toUpperCase的调用在替换前就完成了,而不是在替换时调用
static void Main(string[] args)
{
var abc = "welcome to c#!";
abc = Regex.Replace(abc, "\\w+", match => match.Value[0].ToString().ToUpper() + match.Value.Substring(1));
}
String s = "foo bar";
Matcher m = Pattern.compile("\\b[a-z]").matcher(s);
StringBuffer sb = new StringBuffer(s.length());
while(m.find()){
m.appendReplacement(sb, m.group().toUpperCase());
}
m.appendTail(sb);
System.out.println(sb.toString());
}楼上C#看得心痒痒,Java里的怎么就这么奇葩...
import static com.googlecode.totallylazy.regex.Regex.regex;import java.util.regex.MatchResult;import com.googlecode.totallylazy.Callable1;public class Q390784402
{
/**
* @param args
*/
public static void main(final String[] args)
{
try
{
final String text = regex("\\b\\w").call("foo bar").replace(new Callable1<MatchResult, String>() {
@Override
public String call(final MatchResult mr)
{
return mr.group().toUpperCase();
}
});
System.out.println(text);
}
catch (final Exception e)
{
e.printStackTrace();
}
}
}
{ /**
* @param args
*/
public static void main(final String[] args)
{
try
{
final String text = regex("\\b\\w").call("foo bar").replace(mr -> mr.group().toUpperCase());
System.out.println(text);
}
catch (final Exception e)
{
e.printStackTrace();
}
}}Java 8 可以这样写
[code=batch]D:\Temp>j:\share\jdk8\bin\javac -cp j:\library\totallylazy\totallylazy-1193.jar Q390784402.javaD:\Temp>j:\share\jdk8\bin\java -cp .;j:\library\totallylazy\totallylazy-1193.jar Q390784402
Foo Bar[/code]
public class B{
public static void main(String [] args){
Scanner s= new Scanner(System.in);
System.out.println("请输入一句英文:");
String s1=s.nextLine();
String[] s2=s1.split(" ");
StringBuffer s3=new StringBuffer();
for(int i=0;i<s2.length;i++){ String s22=s2[i].substring(1); char s21=s2[i].charAt(0);
String s23=String.valueOf(s21);
String s24=s23.toUpperCase();
System.out.print(s24+s22+" ");
}
}}
String str="i am a boy!";
str=Regex.Replace(str, @"(?<=^|\s)[a-z]", t=>t.Value.ToUpper());
java的话还是自己写for循环拼接字符串吧。
ScriptEngine engine = manager.getEngineByName("js");
engine.eval("var t='i am a boy'; function replaceReg(){ return t.replace(/\\b(\\w)/g,function(e){return e.toUpperCase()}) }println(replaceReg())");
import java.util.regex.Pattern;public class DaXie { public static void main(String[] args) {
String str = "i am a boy";
StringBuilder sBuilder = new StringBuilder();
Pattern pattern = Pattern.compile("^[a-zA-Z]+|\\S[a-zA-Z]+");
Matcher matcher = pattern.matcher(str);
String tempString = null;
while(matcher.find())
{
tempString = matcher.group();
tempString = (tempString.charAt(0)+"").toUpperCase()+tempString.substring(1,tempString.length());
sBuilder.append(tempString).append(" ");
}
System.out.println(sBuilder.toString());
}
}
StringBuffer a = new StringBuffer("i am boy ");
Pattern pattern = Pattern.compile("[a-z]+\\s*");
Matcher matcher = pattern.matcher(a.toString());
while (matcher.find())
{
String tmp = matcher.group();
a.replace(matcher.start(), matcher.start()+1, tmp.substring(0, 1).toUpperCase());
}
System.out.println(a.toString());
String yourString="i am a boy";
String Seperator=" ";
String[] Resources=yourString.split(Seperator);
for(int i=0;i<Resources.length;i++){
String left = String.valueOf(Resources[i].charAt(0)).toUpperCase();
String right = Resources[i].substring(1,Resources[i].length());
String total = left+ right +Seperator;
System.out.print(total);
}