
正文
java字母字符组成代码 java字符组成字符串
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
java中根据一段字符串,获取其中的字母,有要求;求个具体代码
要求1中要去掉所有数字,要求2、3中又要保留数字并进行翻译,所以我两种都写了。具体代码为:
public class Test {
public static void main(String args[]) {
String str = "0as2sw$#3Six";
System.out.println("原字符串:[" + str + "]");
System.out.println("");
//不翻译数字
SetString set1 = new LinkedHashSet();
for (String s : str.split("[^A-Z a-z]")) {
if (s.length() 0) {
set1.add(s);
}
}
System.out.println("不翻译数字的结果:" + set1);
System.out.println("");
/*因为又要去除非字母和数字(以下简称去杂),又要将去杂结果分离成数字和字母,再翻译数字,整个流程挺麻烦的,索性在去杂之前,先将数字翻译成英文,为了使数字翻译后的英文和原字符串的字母分开,在数字左右添加占位符#,这样的话,形如:[a1b2c3]就会被处理为:[a#one#b#two#c#three#],这样去杂后,就会被分割为:[a,one,b,two,c,three]了。这里定义了枚举值English,用于实现0-9的英文映射,[10]不好映射成[ten],现在只能映射为[one,zero],如果按照题干非要映射为ten的话你再考虑考虑吧*/
for (English english : English.values()) {
str = str.replaceAll(english.getNum() + "", "#" + english.name() + "#");
}
System.out.println("将数字替换为“占位符 + 英文 + 占位符”的中间结果:[" + str + "]");
System.out.println("");
//翻译数字的结果
SetString set2 = new LinkedHashSet();
for (String s : str.split("[^A-Za-z]")) {
if (s.length() 0 ) {
//判断当前字符串是否是数字的英文,如果不是,就把它拆成单字母
if (mappingEnglish(s)){
set2.add(s);
}else {
for (char c : s.toCharArray()) {
set2.add(String.valueOf(c));
}
}
}
}
System.out.println("翻译数字的结果:" + set2);
}
//判断当前字符串是否是数字的英文
private static boolean mappingEnglish(String str) {
for (English english : English.values()) {
str = str.toLowerCase();
if (english.name().equals(str)) {
return true;
}
}
return false;
}
enum English {
zero(0),
one(1),
two(2),
three(3),
four(4),
five(5),
six(6),
seven(7),
eight(8),
nine(9);
private int num;
public int getNum() {
return num;
}
English(int num) {
this.num = num;
}
}
}
我怕发出来代码又挤在一起,顺便也截个图:
8-21行
22-50行
51-61行
62-85行完
运行结果:
相关问答
Q1: java实现:从26个字目中任取5个字母,排列组合出所有的可能,打印出来
package baidu.testTwo;
public class Sort {
private static char[] NUM = { 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I',
'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V',
'W', 'X', 'Y', 'Z' };// 所有的字母数
public char[] randNum(int num) {// 随机选取num个数
char[] s = new char[num];// 定就num个长度的字符数组
int i = 0;// 计算循环数
int n = 0;// 控制循环
while (i num) {
char c = NUM[(int) (Math.random() * NUM.length)];// 随机出一个字符,将其赋给c
for (int j = 0; j s.length; j++) {// 这个循环是除去重的字符
if (s[j] == c)
{// 如果有重复的则终止循环
n = 1;// 将n=1
break;// 终止for循环
}
}
if (n == 1) { // 如果n==1,则进入下一个while循环
n = 0; // 将n还原 n=0;
continue; // 进入下一循环
} else { // 如果n不等于1,刚将字符c赋给s[i]
n = 0; // 将n还原 n=0;
s[i] = c; // 将字符c赋给s[i]
i++;
}
}
return s;// 返回含有num个不重复的字符数组
}
public void sortNum(int num) {//排列出所有的可能
char[] s = randNum(num).clone();//clone一个randNum(num);
System.out.println("***" + s.length);//打印s的长度
for (int i = 0; i s.length; i++) {//排列循环
for (int j = 0; j s.length - 1; j++) {
char t;
t = s[j];
s[j] = s[j + 1];
s[j + 1] = t;
for (int m = 0; m s.length; m++) {//打印排列
System.out.print(s[m]);
}
System.out.println();
}
}
}
public static void main(String[] a) {
Sort s = new Sort();
s.sortNum(5);
}
}
Q2: java 取字符串的中字母数字组合?
代码截图
运行结果
以下是全部代码,不管你字母是什么,字母后边有多少数字,都能取出来,如果是只需要数字,那么拼接的时候别拼接那个字母就OK
public static void main(String[] args) {
String str = "p17g1n12f3";
StringBuffer data = new StringBuffer();
String[] arr = new String[4];
for (int i = 0,j=0,leni = str.length();ileni;i++){
str.charAt(i);
if (check(str.charAt(i))){
if (StringUtils.isBlank(data.toString())){
data.append(str.charAt(i));
}else {
arr[j] = data.toString();
j++;
data = new StringBuffer();
data.append(str.charAt(i));
}
}
if (isNumberic(str.charAt(i)+"")){
data.append(str.charAt(i));
}
if (i+1 == leni){
arr[j] = data.toString();
}
}
System.out.println(Arrays.toString(arr));
}
/**
* 判断字符串是否为数字
*
* @param str
* @return
*/
public static boolean isNumberic(String str) {
Pattern pattern = Pattern.compile("[0-9]*");
return pattern.matcher(str).matches();
}
/**
* 判断一个字符串是否为字母
*
* @param fstrData
* @return
*/
public static boolean check(char fstrData) {
char c = fstrData;
if (((c = 'a' c = 'z') || (c = 'A' c = 'Z'))) {
return true;
} else {
return false;
}
}
Q3: 如何让java 产生连续的字母+数字的字符串 比如 第一个字符串是A1 第二个是A2……A9 B1……最后一个是Z9
写一个for循环,首先A就是数字65,转换成字符就是大写字母A,97就是小写字母a,这么说接下来你应该自己会了 呵呵 对应的B就是66 你懂的
Q4: 用java代码怎么验证字符串是字母加数字或者字符组成的呢?
可以用正则表达式来检验
比如这样就可以满足您全部的需求:
String reg="^[a-zA-Z0-9]{6,16}$";
String pwd="1234567890abcd";
boolean f=pwd.matches(reg);
System.out.println(f);
也就是密码必须6到16位,并且必须是a-z或者A-Z或者数字,才能匹配
匹配成功返回true,匹配失败返回false
关于java字母字符组成代码和java字符组成字符串的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。






