求一个JAVA正则表达式大小写转换

//输入任意一个字符串,如:“abDEe23dJfd343dPOddfe4CdD5ccv!23rr”。//取出该字符串中所有的字母。顺序不能改变!并把大写字母变成小写,/... //输入任意一个字符串,如:“abDEe23dJfd343dPOddfe4CdD5ccv!23rr”。
//取出该字符串中所有的字母。顺序不能改变!并把大写字母变成小写,
//小写字母变成大写!
public static void main(String[] args) {
// TODO 自动生成方法存根
String s = "abDEe23dJfd343dPOddfe4CdD5ccv!23rr";

Pattern ptn = Pattern.compile("[0-9]|!");
Matcher m = ptn.matcher(s);
String result = m.replaceAll("");

System.out.println(result);
char[] a =result.toCharArray();
int i;

for (i = 0; a[i] != '\0'; i++)
{
if (result.to(a[i])) //如果是大写字母
a[i] += 32;
else if (islower(a[i])) //如果是小写字母
a[i] -= 32;
}

}

}
已经提取了字母,不知道该怎么转换.求改
展开
 我来答
死后是好人
2011-11-16 · TA获得超过2638个赞
知道小有建树答主
回答量:628
采纳率:0%
帮助的人:962万
展开全部
.replaceAll("[^a-zA-Z]+", "");
你的意思是这个吧,将字符串中的非字母全部去掉,光剩下字母以便进行转换,那这个就没问题了,刚试过
追问
就是啊我已经提取了字母abDEedJfddPOddfeCdDccvrr 
现在该怎么把字母里面小写转大写,大写转小写啊?
追答
你现在这个方法就挺好的,一次遍历修改
如果用正则修改很困难,因为replaceAll是将符合条件的转换成相同的字符串,但是你的要根据转换前的字符来决定转换的结果,所以很困难
用其他的一次转换大小写的函数也很困难,因为他只能先把小写转换成大写或者先将大写转换成小写,那这样就很难分清这个字符之前是小写还是大写的
你讲这个后半部分直接封装成一个方法不就行了,以后需要也同样可以使用
char[] a =result.toCharArray();
int i;
//不过你这个地方写的不对,不符合java语法规范
for (i = 0; a[i] != '\0'; i++)//java字符串不会以\0结尾,所以你肯定会超出数组长度,报
//java.lang.ArrayIndexOutOfBoundsException错误
//你应该改成
for(i=0;i='a' && a[i]='a' && a[i]<='z') //如果是小写字母
a[i] -= 32;
else //如果是大写字母
a[i] += 32;
}
return String.valueOf(a);
}
}
程序运行结果:
abDEe23dJfd343dPOddfe4CdD5ccv!23rr
abDEedJfddPOddfeCdDccvrr
ABdeEDjFDDpoDDFEcDdCCVRR
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
blacklong
2011-11-16 · TA获得超过1500个赞
知道大有可为答主
回答量:2745
采纳率:0%
帮助的人:1249万
展开全部
java里都是强类型,不要用C的思想去转换了。
-----------------------------------
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class RegexTest {

/**
* @param args
*/
public static void main(String[] args) {
String s = "abDEe23dJfd343dPOddfe4CdD5ccv!23rr";

StringBuilder sb = new StringBuilder(s);

Pattern ptn = Pattern.compile("([a-zA-Z])");
Matcher m = ptn.matcher(sb);
int position = 0;
while(m.find(position)){
System.out.println(m.group(1)+"|"+m.start()+"|"+m.end());
sb.replace(m.start(),m.end(),convert(m.group(1).toCharArray()[0]));
position = m.end();
}
System.out.println(sb.toString());

}

private static String convert(char c) {
if(c>='a' && c<='z'){
return String.valueOf(c).toUpperCase();
}else{
return String.valueOf(c).toLowerCase();
}
}
}
追问
我现在已将字符串中的非字母全部去掉了,就剩下abDEedJfddPOddfeCdDccvrr
有没有什么代码可以直接将字符串abDEedJfddPOddfeCdDccvrr直接小写转大写,大写转小写啊?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式