java中的 indexOf 与 replace 问题

  碰到一个应用场景,有一表单字符串:
String test = "<form><input ...><input ...>...<input ...></form>";
  现在需要在最后一个<input ...>字段后再加上一个<input ...>字段,用来实现特定的功能,前提是这个字符串长度是不定长的,<input ...>的个数也是不定的。
  当时碰到这个问题直接想到两个方法,indexOf和replace,下面给出我的解决方法。

indexOf:

  String test = "<form><input ...><input ...>...<input ...></form>";
  String str = "<input last>";
  int ch = test.indexOf("</form>");
  test = test.substring(0, ch) + str + test.substring(ch, test.length());

  /** 结果 */
  test = "<form><input ...><input ...>...<input ...><input last></form>"


replace:

  String test = "<form><input ...><input ...>...<input ...></form>";
  String str = "<input last>" + "</form>";
  test = test.replace("</form>", str);

  /** 结果 */
  test = "<form><input ...><input ...>...<input ...><input last></form>"


  两个方法的复杂度基本一样,但我觉得第一种可能更灵活一点,因为如果后面</form>字段也是不定长的话,repalce方法就不能直接这么用了,可能还得和indexOf结合用,更麻烦。

  indexOf方法:指定所要查找的内容在字符串中第一次出现的位置,如果未出现则返回-1,区分大小写。lastIndexOf方法基本一样,有以下几种用法:

String str = "hello world";

/** 查找字符0第一次出现的位置索引*/
int a = str.indexOf("o");

/** 查找字符0从索引4开始第一次出现的位置索引*/
int b = str.indexOf("o", 4);

/** 查找字符0最后一次出现的位置索引*/
int c = str.lastIndexOf("o");

/** 查找字符0在索引4内最后一次出现的位置索引*/
int d = str.lastIndexOf("o", 4);
int e = str.lastIndexOf("o", 3)

/** 结果 */
a=4,b=4,c=7,d=4,e=-1


  replace方法:在字符串中对替换相应的字符或字符串,相关方法还有replaceFirst与replaceAll。
  replaceFirst:替换在原始字符串中第一次出现的字符或字符串,以后的不管。
  replaceAll:与replace相比都是全部替换,不同的是基于规则表达式的替换,对特殊字符的处理有些不同。

  String test = "a1b2c1d2";
  String a = test.replace("1", "3");
  String b = test.replaceFirst("1", "3");
  String c = test.replaceAll("\\d", "e");

  /** 结果 */
  a = "a3b2c3d2"
  b = "a3b2c1d2"
  c = "aebecede"
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值