高效率拼接字符串

javaors 2009-11-24 03:12:01
現在我有一個類型的字符串,例如:
AAA_BBB_CC_DDDD..
如何將它拼接成AaaBbbCcDddd...


目前只有一種思路:

String str = "AA_BBB_CCCC_DDD";
int count = str.split("_").length;
StringBuffer tranStr = new StringBuffer();
for(int a =0;a <count; a++){
String str1 = str.split("_")[a];
tranStr.append(str1.substring(0,1)+ str1.substring(1,str1.length()).toLowerCase());
}
System.out.println(tranStr.toString());



不知道大家有沒有更效率的寫法,總感覺這樣拼會浪費很大資源
...全文
311 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
wifewifewife 2009-11-24
  • 打赏
  • 举报
回复
引用 1 楼 bfhelin 的回复

String str = "AA_BBB_CCCC_DDD";
String s = str.replaceAll("_", " ");
System.out.println(s);

非常强大,这个已经足够了.
dudu3052 2009-11-24
  • 打赏
  • 举报
回复
同意9楼之言
zl3450341 2009-11-24
  • 打赏
  • 举报
回复
public static void main(String[] args){
String s = "AAA_BBB_CC_DDDD";
String ss = s.replace("_","");
char[] chs = ss.toCharArray();
for(int i=chs.length-1;i>0;i--){
if(chs[i]==chs[i-1]) chs[i] += 32;
}
System.out.println(new String(chs));
}
javaors 2009-11-24
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 bingliang008 的回复:]
引用 7 楼 javaors 的回复:
引用 4 楼 zhoupuyue 的回复:
Java codepublicstaticvoid main(String[] args){
    String s="AAA_BBB_CC_DDDD";
    String ss= s.replace("_","");char[] chs= ss.toCharArray();for(int i=chs.length-1;i>0;i--){if(chs[i]==chs[i-1]) chs[i]?-


呵呵,可能是我的例子舉的不太好,那如果我的字母是ABC_CDE_FHI,我想要的結果是AbcCdeFhi
你這個程序是ABCcDEFHI
循环把“_*”(*为_后的第一个字母)后的字母改为小写,然后执行:

String str = "AA_BBB_CCCC_DDD";
String s =str.replaceAll("_", "");
System.out.println(s);
[/Quote]\


這個想法不錯,可能會少一些拼接
bingliang008 2009-11-24
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 javaors 的回复:]
引用 4 楼 zhoupuyue 的回复:
Java codepublicstaticvoid main(String[] args){
    String s="AAA_BBB_CC_DDDD";
    String ss= s.replace("_","");char[] chs= ss.toCharArray();for(int i=chs.length-1;i>0;i--){if(chs[i]==chs[i-1]) chs[i]?-


呵呵,可能是我的例子舉的不太好,那如果我的字母是ABC_CDE_FHI,我想要的結果是AbcCdeFhi
你這個程序是ABCcDEFHI
[/Quote]循环把“_*”(*为_后的第一个字母)后的字母改为小写,然后执行:

String str = "AA_BBB_CCCC_DDD";
String s =str.replaceAll("_", "");
System.out.println(s);
javaors 2009-11-24
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 huantianxidi 的回复:]
你的题意没有说明确啊。
4楼的写法挺简便的。
应该不错吧。
[/Quote]

是啊,我的需求說的太模糊了。在7樓有解釋了
sunhope808 2009-11-24
  • 打赏
  • 举报
回复
可以到我们群组讨论哦

诚恳地邀请大家加入我们Java群组,热爱Java的同仁们,一起来探讨其中的难题和奥妙,每周我们会发出一个趣味性的小题目供大家探讨。也会继续上传JAVA连载教程,期待你们的加入!
群组地址:http://www.rjgc.net/uchome/space.php?do=mtag&tagid=73
欢天xi地 2009-11-24
  • 打赏
  • 举报
回复
你的题意没有说明确啊。
4楼的写法挺简便的。
应该不错吧。
javaors 2009-11-24
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 bayougeng 的回复:]
其实你自己那个思路就行,只是要优化一下:
String[] str1 = str.split("_");
这个数组的定义放在循环外面,程序开头的地方。

[/Quote]

 String str = "AA_BBB_CCCC_DDD";
int count = str.split("_").length;
StringBuffer tranStr = new StringBuffer();
String[] str1 = str.split("_");

for(int a =0;a <count; a++){
tranStr.append(str1[a].substring(0,1)+ str1[a].substring(1,str1.length()).toLowerCase());
}
System.out.println(tranStr.toString());


這樣是吧?
javaors 2009-11-24
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 huantianxidi 的回复:]
虽然多了循环。但是省去了。拼接字符串所占用的内存。
[/Quote]


恩,沒有搞并發,這個真沒法談效率


所以想要個特別明顯的效率高點的
bayougeng 2009-11-24
  • 打赏
  • 举报
回复
其实你自己那个思路就行,只是要优化一下:
String[] str1 = str.split("_");
这个数组的定义放在循环外面,程序开头的地方。
欢天xi地 2009-11-24
  • 打赏
  • 举报
回复
虽然多了循环。但是省去了。拼接字符串所占用的内存。
javaors 2009-11-24
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 zhoupuyue 的回复:]
Java codepublicstaticvoid main(String[] args){
String s="AAA_BBB_CC_DDDD";
String ss= s.replace("_","");char[] chs= ss.toCharArray();for(int i=chs.length-1;i>0;i--){if(chs[i]==chs[i-1]) chs[i]?-
[/Quote]

呵呵,可能是我的例子舉的不太好,那如果我的字母是ABC_CDE_FHI,我想要的結果是AbcCdeFhi
你這個程序是ABCcDEFHI
bayougeng 2009-11-24
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 bfhelin 的回复:]
String str = "AA_BBB_CCCC_DDD";
String s =str.replaceAll("_", "");
System.out.println(s);
[/Quote]

强大。。。
javaors 2009-11-24
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 huantianxidi 的回复:]
Java code
String str="AA_BBB_CCCC_DDD";
String[] atrAry= str.split("_");int count= atrAry.length;
StringBuffer tranStr=new StringBuffer();char[] charAry=null;int offset= (int)'a'- (int)'A';// 计算大小写之间的差值for (int a=0; a< count; a++) {
charAry= atrAry[a].toCharArray();int maxIdx= charAry.length;for (int i=0; i< maxIdx; i++) {if (i<=0) {
tranStr.append(charAry[i]);
}else {int tmp= charAry[i];char sbStr= (char) (tmp+ offset);
tranStr.append(sbStr);
}
}
}
System.out.println(tranStr.toString());

那个效率高。我不知道。
[/Quote]



差不多吧,貌似又多了一層循環,不過還是感謝你
阿_布 2009-11-24
  • 打赏
  • 举报
回复

public static void main(String[] args){
String s = "AAA_BBB_CC_DDDD";
String ss = s.replace("_","");
char[] chs = ss.toCharArray();
for(int i=chs.length-1;i>0;i--){
if(chs[i]==chs[i-1]) chs[i] += 32;
}
System.out.println(new String(chs));
}
javaors 2009-11-24
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 bfhelin 的回复:]
String str = "AA_BBB_CCCC_DDD";
String s =str.replaceAll("_", "");
System.out.println(s);
[/Quote]

樓上的,你輸出的是AABBBCCCCDDD,不是我想要的AaBbbCcccDdd
欢天xi地 2009-11-24
  • 打赏
  • 举报
回复

String str = "AA_BBB_CCCC_DDD";
String[] atrAry = str.split("_");
int count = atrAry.length;
StringBuffer tranStr = new StringBuffer();
char[] charAry = null;
int offset = (int) 'a' - (int) 'A';// 计算大小写之间的差值
for (int a = 0; a < count; a++) {
charAry = atrAry[a].toCharArray();
int maxIdx = charAry.length;
for (int i = 0; i < maxIdx; i++) {
if (i <= 0) {
tranStr.append(charAry[i]);
} else {
int tmp = charAry[i];
char sbStr = (char) (tmp + offset);
tranStr.append(sbStr);
}
}
}
System.out.println(tranStr.toString());


那个效率高。我不知道。
Ak混子 2009-11-24
  • 打赏
  • 举报
回复
String str = "AA_BBB_CCCC_DDD";
String s =str.replaceAll("_", "");
System.out.println(s);
课程目标:学习Java语言中字符串相关的知识、字符编码常识和正则表达式的使用,并完成案例前导课程:《Java工程师必学系列课程》前4部课程内容:本课程是《Java工程师必学系列课程》的第5部分,主要讲解Java语言中字符串相关知识、字符编码常识和正则表达式的使用。本课程涉及的主要内容可以分为四部分:一、String、StringBuffer和StringBuilder类基本常识、基本原理和使用技巧二、字符编码常识三、Java语言正则表达式的详细语法和使用技巧四、实战案例课程说明:在开发Java程序的过程中,最常用的类莫过于字符串相关的类。可以毫不夸张的说,任何一个Java程序,都离不开对字符串保存和处理。很多学员对字符串的理解只是处于比较粗浅的阶段。殊不知,如果对字符串处理的不好,会影响到软件的运行效率。本课程专门讲解字符串相关的知识,将从字符串的存储方式、底层的运行方式等各方面深入讲解其中的原理和技巧。此外,对字符串进行更高级的处理,又要用到正则表达式的相关知识。正则表达式广泛应用于各种与字符串处理相关的场合。它是一套独立的语言系统,经过几十年的完善和发展,现在已经非常的强大,并且形成了国际标准。各种高级编程语言,都实现了自己的表达式引擎。本课程详细的讲解了Java语言中正则表达式的语法和使用技巧。掌握了正则表达式,对编程水平的提高有非常大的帮助!同时,本课程在最后一部分,安排了非常精彩的、完整的实战案例,通过实战的形式切实帮助学员提高解决具体问题的能力!预期效果:认真学习完本课程,学员可以掌握字符串处理及正则表达式相关的系统知识,并能提高实际的编码水平。环境配置要求:学习本课程需安装JDK1.8或更高版本的JDK,以便程序能正确运行,建议使用IntelliJ IDEA 2019.1.2或更高版本的开发工具。    因有合作协议约束,《穆哥学堂》只提供PDF版本的课件!

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧