关于字符串分割

明白畅达 2020-10-29 03:47:38
数据库中有一个字段String类型 内容为:"充50元送10元"或者"充100元送25元"等等。。我将该字段取出,如何将50和10分割出来或者100和25取出来?有好的方案吗?我看了几种效果都不是很理想
简单来说数据库中有一个充值规格,我需要获取该字段中为数字内容的信息,将它转为int型相加求和。
...全文
474 13 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
tianfang 2020-10-29
  • 打赏
  • 举报
回复
不是问过吗 你如果经常做这些工作,可以使用NLP 中的分词来做,比如 http://thulac.thunlp.org/ 提供的java版本 你可以先在线测试,http://thulac.thunlp.org/demo 输入:充50元送10元 输出:充_v 50_m 元_q 送_v 10_m 元_q
引用 4 楼 pinoco 的回复:
引用 2 楼 太菜了12138 的回复:
substring方法
试过了,有局限性
引用 3 楼 pinoco 的回复:
引用 1 楼 tianfang 的回复:
不是问过吗 你如果经常做文本分析工作,可以使用NLP 中的分词来做,比如 http://thulac.thunlp.org/ 提供的java版本 你可以先在线测试,http://thulac.thunlp.org/demo 输入:充50元送10元 输出:充_v 50_m 元_q 送_v 10_m 元_q
这个是工具类吗,单单解析出来串东西好像对我用处不大
你去试试,看看输出的解释,50_M 表示”50“是数字,你不是就要分离出数字吗
KeepSayingNo 2020-10-29
  • 打赏
  • 举报
回复
充 元送 元 这些都作为正则表达式能匹配的元素,用replace转为逗号,再获取数字 String s = "充50元送10元"; String a = s.replaceAll("['充''元送''元']", ","); System.out.println(a);
明白畅达 2020-10-29
  • 打赏
  • 举报
回复
引用 9 楼 liuyh1024 的回复:
public static void main(String[] args) {
String s="\"充50元送10元\"或者\"充100元送25元\"";
Pattern p = Pattern.compile("\\d{1,}");
Matcher m = p.matcher(s);
while(m.find()) {
System.out.println(m.group());
}
}
你这个感觉很不错啊
明白畅达 2020-10-29
  • 打赏
  • 举报
回复
引用 8 楼 长江水面写日记 的回复:
我觉得这是设计问题,应该有个表结构存储这两个值,或者将这些信息转成json存入数据库,截取来获取这么关键的信息也太儿戏了
是这样说没错,但是我只能想办法按照要求做,本来是说先不做这个了,又提到文字格式比较固定考虑用分割字符串取出再转型也可以做
明白畅达 2020-10-29
  • 打赏
  • 举报
回复
引用 6 楼 太菜了12138 的回复:
文字部分是固定的吗,如果是固定的,substring+lastIndex基本够用
是固定的没错,我发帖前已经获取到了,但是如果是充值金额或者送的金额有调整,我的给的索引也需要变,虽然可能性比较小,但是感觉还是有点问题。
戎码一生灬 2020-10-29
  • 打赏
  • 举报
回复
public static void main(String[] args) {
//测试1
String a = "充50元送10元";
a = a.replace("充", "");
String[] ss = a.split("元送");
System.out.println(ss[0]);
System.out.println(ss[1].replace("元", ""));
//测试2
String b = "充100元送25元";
b = b.replace("充", "");
String[] ww = b.split("元送");
System.out.println(ww[0]);
System.out.println(ww[1].replace("元", ""));
}
liuyh1024 2020-10-29
  • 打赏
  • 举报
回复
public static void main(String[] args) { String s="\"充50元送10元\"或者\"充100元送25元\""; Pattern p = Pattern.compile("\\d{1,}"); Matcher m = p.matcher(s); while(m.find()) { System.out.println(m.group()); } }
  • 打赏
  • 举报
回复
我觉得这是设计问题,应该有个表结构存储这两个值,或者将这些信息转成json存入数据库,截取来获取这么关键的信息也太儿戏了
我只爱钱 2020-10-29
  • 打赏
  • 举报
回复
文字部分是固定的吗,如果是固定的,substring+lastIndex基本够用
明白畅达 2020-10-29
  • 打赏
  • 举报
回复
引用 2 楼 太菜了12138 的回复:
substring方法
试过了,有局限性
明白畅达 2020-10-29
  • 打赏
  • 举报
回复
引用 1 楼 tianfang 的回复:
不是问过吗

你如果经常做文本分析工作,可以使用NLP 中的分词来做,比如 http://thulac.thunlp.org/ 提供的java版本

你可以先在线测试,http://thulac.thunlp.org/demo

输入:充50元送10元

输出:充_v 50_m 元_q 送_v 10_m 元_q
这个是工具类吗,单单解析出来串东西好像对我用处不大
我只爱钱 2020-10-29
  • 打赏
  • 举报
回复
substring方法
tianfang 2020-10-29
  • 打赏
  • 举报
回复
不是问过吗 你如果经常做文本分析工作,可以使用NLP 中的分词来做,比如 http://thulac.thunlp.org/ 提供的java版本 你可以先在线测试,http://thulac.thunlp.org/demo 输入:充50元送10元 输出:充_v 50_m 元_q 送_v 10_m 元_q

67,550

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧