求一个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;
}
}
}
已经提取了字母,不知道该怎么转换.求改 展开
//取出该字符串中所有的字母。顺序不能改变!并把大写字母变成小写,
//小写字母变成大写!
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;
}
}
}
已经提取了字母,不知道该怎么转换.求改 展开
2个回答
展开全部
.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
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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();
}
}
}
-----------------------------------
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直接小写转大写,大写转小写啊?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询