java - 将 StringTokenizer 与逗号分隔符一起使用,同时保持逗号前面有反斜杠
问题描述
考虑以下字符串:
String str = XFB_PART~,XFB_IDF~,XFB_MODE~0,XFB_LOCALITEM~,XFB_REMOTEITEM~,XFB_MSG~keep,/this/,comma,ASYNCHRONOUS~0,BROADCAST~0,XFB_LOCALAGT~,XFB_SUSER~,XFB_RUSER~,XFB_FILE_NAME~,XFB_SAPPL~,XFB_RAPPL~,XFB_IDA~,XFB_MAXDURATION~000000
这里的想法是使用逗号作为分隔符,但同时忽略由反斜杠分隔的逗号。
所以当我这样做时:
propsToken = new StringTokenizer(str, ",");
我应该将其作为令牌之一接收:
XFB_MSG~keep,this,comma (because there was a backslash preceding it)
这是我所做的:
String str = XFB_PART~,XFB_IDF~,XFB_MODE~0,XFB_LOCALITEM~,XFB_REMOTEITEM~,XFB_MSG~keep,\this\,comma,ASYNCHRONOUS~0,BROADCAST~0,XFB_LOCALAGT~,XFB_SUSER~,XFB_RUSER~,XFB_FILE_NAME~,XFB_SAPPL~,XFB_RAPPL~,XFB_IDA~,XFB_MAXDURATION~000000
String strWithComma = "";
if (StringUtils.isNotEmpty(str) && str.contains("\,")){
strWithComma = Arrays.toString(str.split("(?<!\\)),"));
propsToken = new StringTokenizer(strWithComma, "");
} else {
propsToken = new StringTokenizer(str, ",");
}
但是输出是空的。我的正则表达式不正确吗?我希望它根据分隔符“,”拆分这些标记,除了那些在逗号前有反斜杠的标记,我希望它们再次显示而没有反斜杠但仍然带有逗号。
解决方案
推荐阅读
- sql - 无法插入到存储过程中声明的类型表
- php - 一个模型和多个模型之间的 Laravel Eloquent 关系作为 MorphOne?
- rxjs - 在调度动作之前等待多个动作在史诗中完成
- c - fopen() 或 open() 使用什么字符编码?
- reactjs - React:如何更新根组件的道具
- python - 如何在 POST 请求中使用来自 ajax 调用的数据填充 django 表单?
- java - 获取孩子的姓名以及 Firebase 数据库中的值
- javascript - 使用通用/动态属性列表访问子属性
- svg - 为什么我的旋转 SVG 会移位?
- nested - 处理嵌套类中的 PApplet 调用