每日20行之1~~~识别并修改String中的一部分,StringBuffer、StringTokenizer

今天是我从零单排学Java的第一天,一个程序员从写完第10000行代码的那一刻才真正迈入职业的大门。我不知道我之前算是写过多少代码,不过就从今天开始从零单排。10000除以20是500,每天20行,手打,不许复制~那么我希望这一次的专栏是对自己的一次监督,另外也是对后来希望学习编程的同学的一种激励。我不知道我在500天后会变成什么样子,不过我相信自己,以及与同学们进行额外的分享。

欢迎评论,多多指教~
感兴趣的朋友可以留下个地址我们互相学习~
**那么应该是一年半以后,会不一样的~**

今天我们面临的问题是如何识别字符中固定模式的一部分,并修改它,比如我不喜欢我的字符串中包含“#page=“这个字符串。

240 http://www.xxxx.net/profile/Assessment_Procedures/links/0fcfd5098d8df499a8000000.pdf#page=13 http://link.springer.com/chapter/10.1007/3-540-34416-0_1 a
treebased similarity for evaluating concept proximities in an
ontology a treebased similarity for evaluating concept proximities in
an ontology
244 http://www.xxxx.net/profile/Collective_Assessment_Procedures/links/0fcfd5098d8df499a8000000.pdf#page=66 http://link.springer.com/chapter/10.1007/3-540-34416-0_7 hierarchical
clustering for boxplot variables hierarchical clustering for boxplot
variables

(中间用table”\t”隔开)
那么我要将”#page=”部分删去,用java实现。

String value = "";
while((value =bf.readLine())!=null){
value = value.trim();
if(!value.equals("")){      
String[] editedvalue = value.split("\t");
String[] tempvalue = new String[2];
tempvalue = editedvalue[1].split("#page");
editedvalue[1] = tempvalue[0];
StringBuffer sb = new StringBuffer();
    sb.append(editedvalue[0]);
for(int i=1;i<4;i++){
    sb.append("\t");
    sb.append(editedvalue[i]);
}
String newstr = sb.toString();
value = newstr;
values.add(value);
}
}

这里面用到的是StringBuffer,再将StringBuffer转换到另一个字符串中。
除此之外还可以用另一个java的类库:StringTokenizer。

StringTokenizer tokener = new StringTokenizer(orgStr,"\t");
String[] result = new String[tokener.countTokens()];
int i = 0;
while(tokener.hasNext()){
    result[i++] = tokener.nextToken();
}

这个用到的是StringTokenizer的split功能,由此实现了对于String的识别和定位修改,只要你找到模式,就不难找到解决办法。

StringBuilder和StringBuffer的区别

我们涉及到了不同的对于string的操作类库,那么这些类库有些区别记录在这里。
StringBuffer和StringBuilder类都表示内容可以被修改的字符串,StringBuilder是线程不安全的,运行效率高,如果一个字符串变量是在方法里面定义,这种情况只可能有一个线程访问它,不存在不安全的因素了,则用StringBuilder。如果要在类里面定义成员变量,并且这个类的实例对象会在多线程环境下使用,那么最好用StringBuffer。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值