字符串例子:Stirng tem=”abc\0dd\01ee\037gg\21gg”;
要求:把八进制的字符串取出来。
取得结果:\0 \01 \037 \21
另外:可以使用正则表达式等各种方法,只要能取出就行。当然是java可以调用的方法。
要求:把八进制的字符串取出来。
取得结果:\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类型里面都会被当成一个符号了,没法解析啊
\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分
解决方案:5分
正则匹配一下就行了