`
jafisher
  • 浏览: 55539 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

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"
分享到:
评论

相关推荐

    Java 用法明细介绍

    indexOf(String s ,int startpoint) 从startpoint处开始检索 如果没有检索到,将返回-1 6、得到字符串的子字符串 substring(int startpoint) 从startpoint处开始获取 substring(int start,int end) 从start到end...

    java常用方法大全

    indexOf(String s ,int startpoint) 从startpoint处开始检索 如果没有检索到,将返回-1 6、得到字符串的子字符串 substring(int startpoint) 从startpoint处开始获取 substring(int start,int end) 从start到end...

    java字符串替换 代码转换相关源码.rar

    java字符转换类代码,可以...  getstr = getstr.substring(0,getstr.indexOf(oldString)) newString getstr.substring(getstr.indexOf(oldString) oldString.length(),getstr.length());   }   return getstr;  }

    java发送短信之AT指令

    if (strReturn.indexOf("OK", 0) != -1) { return true; } return false; } catch (Exception ex) { System.gc(); ex.printStackTrace(); return false; } } /** * 封闭COM口 * @return boolean */ ...

    StringAPI.java

    int indexOf(String str):返回指定子字符串在此字符串中第一次出现处的索引 int indexOf(String str, int fromIndex):返回指定子字符串在此字符串中第一次出现处的索引,从指定的索引开始 int lastIndexOf...

    java字符串操作大全

    7、regionMatches() 用于比较一个字符串中特定区域与另一特定区域,它有一个重载的形式允许在比较中忽略大小写。  boolean regionMatches(int startIndex,String str2,int str2StartIndex,int numChars)  ...

    Java实现文件的压缩和解压

    基于GUI用IO流中的ZipOutputStream ,ZipInputStream实现文件的解压与压缩, 如文件解压函数如下 private void unZip(String zipFileName, String outputDirectory)throws Exception { InputStream in=null; ...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part2

    17.7.5 fn:indexof 541 17.7.6 fn:replace 542 17.7.7 fn:substring 543 17.7.8 fn:substringbefore 544 17.7.9 fn:substringafter 544 17.7.10 fn:split 545 17.7.11 fn:join 546 17.7.12 fn:tolowercase ...

    利用Java代码实现无字符+中文转换为全中文的代码

    int markStar = sb1.indexOf("&"); //判断方法是以&开头的数据默认为要处理的无字符 if(markStar==0){ String temp = sb1.substring(markStar,8); car = car+Change(temp); sb1=sb1.substring(8); }else if...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part3

    17.7.5 fn:indexof 541 17.7.6 fn:replace 542 17.7.7 fn:substring 543 17.7.8 fn:substringbefore 544 17.7.9 fn:substringafter 544 17.7.10 fn:split 545 17.7.11 fn:join 546 17.7.12 fn:tolowercase ...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part4

    17.7.5 fn:indexof 541 17.7.6 fn:replace 542 17.7.7 fn:substring 543 17.7.8 fn:substringbefore 544 17.7.9 fn:substringafter 544 17.7.10 fn:split 545 17.7.11 fn:join 546 17.7.12 fn:tolowercase ...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part5

    17.7.5 fn:indexof 541 17.7.6 fn:replace 542 17.7.7 fn:substring 543 17.7.8 fn:substringbefore 544 17.7.9 fn:substringafter 544 17.7.10 fn:split 545 17.7.11 fn:join 546 17.7.12 fn:tolowercase ...

    Java文件处理工具类--FileUtil

    if (fileName.indexOf(errChar.charAt(i)) != -1) { isValid = false; break; } } } return isValid; } /** * 把非法文件名转换为合法文件名. * * @param fileName * @return ...

    Java语言程序设计(第3版)第06章-字符串.pptx

    6.1.1 字符串查找 Java语言程序设计(第3版) int indexOf(int ch) int lastIndexOf(int ch) 找到返回下标值,找不到返回-1。 Java语言程序设计(第3版)第06章-字符串全文共31页,当前为第7页。 6.1.1 字符串转换为数...

    java 正则表达式

    屏蔽关键字(sex , fuck) - 已修改&lt;script language="JavaScript1.2"&gt;function test() {if((a.b.value.indexOf ("sex") == 0)||(a.b.value.indexOf ("fuck") == 0)){ alert("五讲四美三热爱"); a.b.focus(); return ...

    freemarker总结

    这是一个典型的分支控制指令,该指令的作用完全类似于Java语言中的if,if指令的语法格式如下: &lt;#if condition&gt;... &lt;#elseif condition&gt;... &lt;#elseif condition&gt;... &lt;#else&gt; ... 例子如下: (age&gt;60)&gt;老年人 ...

    Jsoup学习——Saz2Csv解析器

    5、Java中字符串的处理:String类和StringBuffer类,substring()、indexOf()、lastIndexOf()、replace()、replaceAll()、trim()、toLowerCase()、endsWith()、equals()、split()等方法的使用 6、Java类集:List,...

    带注释的Bootstrap.java

    /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with ... int pos_start = str.indexOf("${"); ...

    jsonjar包及使用方式.zip

    int index = string.indexOf("mac"); //获取没有分隔符的mac标志 prefix String key = string.substring(index + 6, index + 14).replace(":", ""); //每行加入 brand 节点,写入到文中 JSONObject jsobj=...

    Json解析ParsreTools.zip

    int index2 = type.indexOf("&gt;"); type = type.substring(index1 + 1, index2); Class cls1 = Class.forName(type); String jString = jsonObject2.toString(); String key1 = varName[i];...

Global site tag (gtag.js) - Google Analytics