JAVA截取字符串

andy1217 2010-01-11 02:44:49
我的生产数据里有这样一些数据
张三* 李四(教) 王二五(检) 欧阳乌龟(教)
请教下怎么样只把前面的名字截取出来?谢谢
...全文
161 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
andy1217 2010-01-11
  • 打赏
  • 举报
回复
结贴,谢谢你们
maer56 2010-01-11
  • 打赏
  • 举报
回复
JDK1.5的特性
maer56 2010-01-11
  • 打赏
  • 举报
回复
自动循环s1里面内容,每次循环取出一个就赋给变量str
andy1217 2010-01-11
  • 打赏
  • 举报
回复
请教下这个for (String str : s1) 是什么意思啊?
zoumin19870910 2010-01-11
  • 打赏
  • 举报
回复

String str = "张三2";
str = str.replace("*", ""); //去掉*
str = str.replace("2", ""); //去掉2
//下面是截去"("后面的部分
int index = str.indexOf("(");
if (index > 0){
str = str.substring(0, str.indexOf("("));
}
zyus1987 2010-01-11
  • 打赏
  • 举报
回复
借用1楼大哥的代码:O(∩_∩)O~

public class Test {
public static void main(String args[])
{
String s = "张三* 李四(教) 王二五(检) 欧阳乌龟(教)";
String s1[] = s.split("\\s{1,}");
for (String str : s1)
{
if(str.contains("(")){
str = str.substring(0, str.indexOf("("));
}
str = str.replace("*", "");
System.out.println(str);
}
}
}
xxo_bird 2010-01-11
  • 打赏
  • 举报
回复
顶楼上的,这些名字的最后一位不是"*",就是")",你判断一下,然后分别按"*"、"("循环截取就可以了,截取的代码可以看1楼的
andy1217 2010-01-11
  • 打赏
  • 举报
回复
规律就是如果字符串有*或者(,就把前面的截取出来
这样应该怎么截取了?
无伤 2010-01-11
  • 打赏
  • 举报
回复
写一个正则, 判断以下情况, 如果字符串中有* 或( 就取子串就得了
  • 打赏
  • 举报
回复
总结规律,截取。
youlaiyouwang 2010-01-11
  • 打赏
  • 举报
回复
没有规律是没办法处理的。首先总结规律,再截取。这个并不难。
andy1217 2010-01-11
  • 打赏
  • 举报
回复
还有这样的:张三2,张三(学),张三(受检)
就这几种情况
jianvsgao 2010-01-11
  • 打赏
  • 举报
回复
我的想法是可以在数据库里直接操作
我用的是mysql数据库
update datatable d
inner join (select username from datatable) t
on d.username = t.username
set d.username = substring(t.username,1,locate(t.username,'('))
然后,再同样的方法,将“*”去掉
如果此类如“*”等特殊符号太多的话,那就写一个存储过程处理
alangl 2010-01-11
  • 打赏
  • 举报
回复
这个总的有些规律的,是不是只有这3中情况:1、名字后是*,2、名字后是(教),3、名字后(检),如果有把其他的情况列出来。
andy1217 2010-01-11
  • 打赏
  • 举报
回复
to xiezhifu
就是不规律呀,有的名字后面是*,有的是(教)或者(检)
所以想请教个通用的方法,只取前面的名字
xiezhifu 2010-01-11
  • 打赏
  • 举报
回复
如果名字后面是跟着有规律的字符(如‘(’),那可以使用正则表达式来截取

"李四(教)".substring(0, "李四(教)".indexOf("("));//返回"李四",这里只是使用String类提供的api方法简单的解决
maer56 2010-01-11
  • 打赏
  • 举报
回复

public static void main(String args[])
{
String s = "张三* 李四(教) 王二五(检) 欧阳乌龟(教)";
String s1[] = s.split(" ");
for (String str : s1)
{
if (str.length() > 0)
{
str = str.replace("*", "");
int index = str.indexOf("(");
if (index > 0)
{
str = str.substring(0, str.indexOf("("));
}
System.out.println(str);
}
}

}

67,513

社区成员

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

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