现在我在用java处理报文,对于报文字段的检测,我感觉很棘手,因为存在这样的情况:
相对位移 长度 属性 名称 值域 填写标志 说明
0 10 A 市场编号 O 不足长度后补空格, 下同
其中属性A为表示字母或者数字:public static final String ACharSet = "[a-zA-Z0-9]";可是加入了空格我到底该怎么办啊,因为我不知道加了多少个空格,真是棘手
另外希望可以写出这个正则表达式的人,也写出想应的正则表达式
将原字符串按照标准的格式显示出来!
相对位移 长度 属性 名称 值域 填写标志 说明
0 10 A 市场编号 O 不足长度后补空格, 下同
其中属性A为表示字母或者数字:public static final String ACharSet = "[a-zA-Z0-9]";可是加入了空格我到底该怎么办啊,因为我不知道加了多少个空格,真是棘手
另外希望可以写出这个正则表达式的人,也写出想应的正则表达式
将原字符串按照标准的格式显示出来!
对提取出来的10个字符,trim(),再用正则的分组提取每一项的数据。
可能把报文字符串分解之后,再trim进行空格处理,再用正则表达式进行判断即可。
如果对方传过来的报文时这样的 "1(空格) 2345(空格) "
报文的长度是固定的,如果出现这样的情况这个就难判断啦! 3楼的 那样截取字符串太麻烦啦, 我想用一个正则表达对所有报文的字段进行一次性验证
一个个弄真麻烦,效率极其低下,
我现在采取的是动态生成正则表达式 每次生产不一样的表达 需要编译
这么多的的报文并发处理的时候
何来的效率
import java.util.regex.*;public class MyRegex
{
public static final String ACharSet = "[a-zA-Z0-9]"; public static void main(String[] args)
{
// 这里有多个空格
String s = "0 10 A 市场编号 O 不足长度后补空格, 下同";
// 把2个以上的空格转化成1个空格
s = s.replaceAll(" {2,}", " ");
// 获取属性值,先用空格隔开放进数组里面取出第三个元素值
String sProperty = s.split(" ")[2];
Matcher m = Pattern.compile(ACharSet).matcher(sProperty);
if (m.find())
{
System.out.println("YES");
} else
{
System.out.println("NO");
}
}
}