Code Bye

过年了高分:怎么样从java字符串中取出八进制的字符串?

字符串例子:Stirng tem=”abc\0dd\01ee\037gg\21gg”;
要求:把八进制的字符串取出来。
取得结果:\0  \01  \037 \21
另外:可以使用正则表达式等各种方法,只要能取出就行。当然是java可以调用的方法。
解决方案:12分
public static void main(String[] args) {
		String original = "abc\0dd\01ee\037gg\21gg";
		List<String> octalNumberArray = new ArrayList<String>();
		char [] chars = original.toCharArray();
		int i = 0, j = 0;
		for(i = 0; i < chars.length; i ++) {
			if(""\""  == chars[i]) {
				StringBuilder octalNumber = new StringBuilder("/");
				for(j = i+1; j < chars.length; j ++) {
					if(chars[j] < ""8"" && chars[j] >= ""0"") {
						octalNumber.append(chars[j]);
					} else if (j == i+1){
						break;
					} else {
						i = j-1;
						octalNumberArray.add(octalNumber.toString());
						break;
					}
				}
			}
		}
		System.out.println(octalNumberArray);
	}
可以试试这样,假如正则好像更简单一些,等高手正则也可
解决方案:10分
用正则截取 :  \[0-9]+
解决方案:10分
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Test {
	public static void main(String[] args) {
		String tem="abc\0dd\01ee\037gg\21gg";
		String regex = "\\[0-9]+";
		Pattern p = Pattern.compile(regex);
		Matcher m = p.matcher(tem);
		while(m.find()){
			System.out.println(m.group());
		}
	}
}

\需要转义,  所以必须是用\表示 ,  要把你的String tem的\改为\

解决方案:10分
可以匹配掉数字以外的任何字符 ,代码很简单
}
public class Dpro {
	public static void main(String[] args) {
		String tem = "abc\0dd\01ee\037gg#\21gg本人";
		String[] a = tem.split("\\");
		for (String string : a) {
			String s = string.replaceAll("[^0-9]", "");
			System.out.print(s.equals("") ? "" : "\" + s);
		}
	
解决方案:10分
前面的几个同学把方法写出来了,但是有个问题需要说明 8进制数是  0,1,2,3,4,5,6,7   可不是0到9噢
解决方案:10分
然而上面的答案貌似都不符合题意啊,
\0  \01  \037 \21 这些八进制数在String类型里面都会被当成一个符号了,没法解析啊
解决方案:15分
public static void main(String[] args) throws UnsupportedEncodingException {
	String tem="abc\0dd\01ee\037gg\21gg";
	String regex = "[a-z]+";
	String[] tems = tem.split(regex);
	for (String str : tems) {
		if (!str.equals("")) {
			System.out.print("\"+Integer.toOctalString((int)str.toCharArray()[0])+" ");
		}
	}
}


又想了下,本人能做的只有这么多了…

解决方案:23分
Stirng tem=”abc\0dd\01ee\037gg\21gg”;
假如这是java的一行代码,实际运行时根本不存在\0之类的,\是一个转义语法
假如你的要求是找出连续的0-8之间的数字串,你用个正则表达式[0-8]+用 Pattern.matcher即可搜索。
但本人更愿意觉得,你的题目有问题!
解决方案:5分
正则匹配一下就行了

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明过年了高分:怎么样从java字符串中取出八进制的字符串?