java 字符串 替换,求解答

例如有这样一个字符串字符串:用户[$xx$]的名称[$xx$]原值为[$xx$]。。。
[$xx$]的个数1到5个不定,我需要替换$xx$,有什么方法可以替换指定的第几个$xx$,或者按顺序每次替换下一个$xx$也可以,求方法

11个回答

/**
* 从指定位置替换字符,并将字符替换成cha
* @param str
* @param num
* @param cha
* @return
*/

public static String checkCode(String str,int num,StringBuffer cha){

    String[] shz = str.split("\\$xx\\$");
    StringBuffer newsha = new StringBuffer();
    for(int i=0;i<shz.length;i++){
        System.out.println(shz[i]);
        newsha.append(shz[i]);
        newsha.append("$xx$");
        if(i==num){
            newsha.append(cha);
        }
        System.out.println(i);
    }
    return newsha.toString();

}
    String sourceStr="用户[$xx$]的名称[$xx$]原值为[$xx$]";
    String result=sourceStr.replaceFirst("\\$xx\\$", "需要替换的字符串");
    System.out.print(result);
    不知满足要求不

若果上面的不满足你的需求,或许你的意思是每次都替换其中一个,其余的部分不改变,那么你的设计思路可以这样:
1 定义一个变量cursor=0,来记录每次需要替换的[$xx$]的下标,
2获取前缀preSub=subString(0,cursor),获取后缀postSub=subString(cursor+[$xx$].length);
3 拼接字符串:preSub+需要替换的字符串+postSub
4 cursor+=[$xx$].length),这样重复2,3步骤,就可以了

/**
*
* @param source 源字符串
* @param needrep 被替换的字符串
* @param rep 替换的字符串
* @param count 需要替换第几个
* @return 换过之后的字符串
*/
public static String replace(String source,String needRep,String rep,int count){
StringBuilder builder = new StringBuilder(source);
int j = 0;
for(int i=0;i<count;i++){
j=builder.indexOf(needRep,j);
if(j==-1){
return "";
}
j=j+1;
}
builder.replace(j-1, j-1+needRep.length(),rep);
return builder.toString();
}

    public String fun3(String str,String regex,Function<Integer,String>fn ) {
        StringBuilder sb = new StringBuilder(str);
        Pattern p = Pattern.compile(regex);
        int count = 0;
        Matcher m = p.matcher(sb.toString());
        while(m.find()) {
                int start = m.start();
                int end = m.end();
                sb.replace(m.start(), m.end(),fn.apply(count));
                count++;
                m = p.matcher(sb.toString());
        }
        return sb.toString();
    }
 String result = new NonBlocking().fun3("用户[$xx$]的名称[$xx$]原值为[$xx$]", "\\[\\$xx\\$\\]", (count)->{
            return "|第"+count+"次替换|";
        });
        System.out.println(result);

System.err.println(String.format("用户[%s]的名称[$%s$]原值为[%s]", "张三", "李四","王五"));
打印:用户[张三]的名称[$李四$]原值为[王五]

baidu_37252709
lPsycongroo 我也想用这个,但问题是我%s 数量是不确定的,传入的是一个字符串数组,长度也是不定,我怎么做可以让字符串准确替换
一年多之前 回复

加个分组,
Pattern pattern = Pattern.compile("($xx$)?");//括号里是你的正则,?表示非贪婪,忘了这里需不需要了,要是不对去掉试试
Matcher m = p.matcher(strData);// 这里写你的数据源
while(m.find()) {//find一次,表示查找一次
m.group();//表示获取整个分组
m.group(1);//表示获取第一个分组
}
记次的话很简单,试着自己写一下,无非就是提一个变量,然后每次++就好了

String sourceStr="用户[$xx$]的名称[$xx$]原值为[$xx$]";
String result=sourceStr.replaceFirst("\$xx\$", "需要替换的字符串");
System.out.print(result);
不知满足要求不

baidu_37252709
lPsycongroo $xx$ 数量不定,可能是一个,也可能是多个,每个$xx$也不是替换相同的值,会传入一个字符串数组
一年多之前 回复

String.format("%sxxx%sxxx%s",s1,s2,s3),用占位符就可以

我再说明下需求,$xx$的数量不定,传入一个字符串数组,数组的长度跟$xx$数量相同,位置相同。例如这样:
public void getConten(string ... iden){
string conten = "用户[$xx$]....";
.....
}
怎么做比较方便替换

共11条数据 1 尾页
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
求一条替换的字符串??????????????????????????
rn字符串: 1,2,3,4,5,6rn替换成 1,2,3,4,5 or 6rnrnrnrnrn谢谢!!!!!!!!!!!!!!!!!!rnrn
求 替换 字符串 的 正则表达式
string aaa =" 1111 2222 3333 444 555 555" rnrn把字符里面的所有的 和 都替换成 空 rnrnrnJAVASCRIPT 的
java替换指定字符串
import java.util.Scanner; public class Demo003{ public static void main(String[] args) {Scanner input=new Scanner(System.in); System.out.println("请输入一个字符和字符串:");String str2=input.next();//输入一个字符 Stri...
高效率的文件复制的Java代码
高效率的文件复制的Java代码 源代码下载地址:http://www.zuidaima.com/share/1593989887085568.htm
java 字符串 替换 字符
[code=&quot;java&quot;] String strTmp = new String ( &quot;ABCCCA &quot;); strTmp = strTmp.replaceAll ( &quot;A &quot;, &quot;X &quot;); [/code]
Java 字符串正则替换
      content = content.replaceAll(&quot;&amp;lt;p class=\&quot;page-break-after\&quot;&amp;gt;.*?&amp;lt;/p&amp;gt;&quot;, &quot;&amp;lt;p class=\&quot;page-break-after\&quot;&amp;gt;&amp;lt;/p&amp;gt;&quot;);    
字符串截求解答!!
UploadImgs\baidu.jpgrn想取得baidu 请问代码该怎么写!!!
java 字符串 转 时间,求解答
字符串时间:Oct 17 04:11:09 2018 GMT, 怎么转时间对象,试了几种dnf格式,都不行,求帮忙
java正则提取字符串,求解答
0=房源序号, 1=序号, 2=合同编号, 3=项目名称nn怎么获取=号后面的值
java处理一个字符串,求解答
"[a,b,c]"rn我需要处理这类字符串,如何得到里面的数组??我要用数组的方法来处理,所以必须先把它转成数组的形式。
求一个字符串的替换方法
将字符串 adsfafa=1adfdds32af4.5rn替换成 adsfafa=1.00adfdds32af4.50rn就是把 里面数字格式化成两位小数rnrnVB 的语法,谢谢大家。rnrn
java同时替换多个字符串
例如,有一个字符串"abcdefg"rn现在的要求是把"abc"变成"efg"rn把"efg"变成"xyz"rn怎么搞?rn即目标串为:"efgdxyz"rn(PS:replaceAll会导致同步问题,就是说"abc"变成"efg"后,立刻又变成的"xyz")
Java替换任何位置的字符串
字符串形如 "00??00", "0?00?0", "0??00?", 6位定长,'?' 数量和位置都不确定。rn如何将所有的 '?' 都替换成0~9 并输出?rn例如rn输入:"0?00?0", rn输出:"000000", "000010"..."000090", "010000"..."010090"..."090090", rnrn即 第一个为0,第二个从0增加到9;然后第一个为1,第二个从0增加到9....; 第一个为9,第二个从0增加到9。 rnrnJava 新手,请问这样的代码如何实现?
java替换word 2007字符串
新建word文档,把以下内容拷贝到里面。 [code=&quot;doc&quot;] 工欲其善$name其器 [/code] [code=&quot;java&quot;] package word; import java.io.FileOutputStream; import java.util.List; import org.apache.poi.POIXMLDocument; import or...
【JAVA】实现字符串递进替换
无聊在问答区看到了个问题,需求是把下面这个字符串 中的 &quot;[xxx]&quot; 替换掉,且每一次替换的内容都不一样。“a[xxx]bc[xxx]defg[xxx]asjofaije[xxx]dsd ”也就是说 最终替换效果要达到下面这种效果,每一次替换的内容都是可控的。”a[第一次替换]bc[第二次替换]defg[第三次替换]asjofaije[第四次替换]dsd“    /**      *     ...
java中字符串的替换问题
代码如下: rn 杀手之王重生:最强高手[color=#FF0000]1[/color]rn注意:红色部分1代表有很多汉字。rn如果我想把“1“的汉字,用”...”代替,怎么实现?(即显示效果为:“杀手之王重生:最强...”)rnrn
java替换指定位置的指定字符串
分析: string里面并没有这种方法,StringBuilder中有此类方法,替换过后,再次转换回string类型就可以了。 int path = 100; StringBuilder result1 = new StringBuilder(result); result1 = result1.replace(path,path+1, &quot;:{&quot; ); result = &quot;...
Java对字符串进行替换
replace的用法: replace支持字符以及字符串替换 package two; public class Replace { public static void main(String[] args) { String str=&quot;Java是世界上最好的语言&quot;; System.out.println(str.replace(&quot;Java&quot;,&quot;PHP&quot;)); } } re...
关于Jquery点击事件替换问题。求解答
各位,我想做一个如下点击功能。当我点击按钮时,他触发$(".a")事件,然后把class属性改为b。想再次点击触发$(".b")事件。但它每次都是执行a。貌似这个实现思路是有问题的。请问有哪位可以提供解决方案吗?rn题如下:rn rnrnrnrn rn
求解答 正则处理如何替换
如果我有一个表格是 8 8 8 rn我只想取三列数据,如何替换前面两个。
求JAVA高手解答?
各位大哥,小弟刚学JAVA谁能给我讲讲这些题,越详细越好!rn1、写出输出rnpublic class Jtestrnint m=1;rnint i=3;rnvoid Jtest()rnm=2;rni=4;rnrnpublic static void main(String[] args)rnJtest app=new Jtest();rnSystem.out.println(app.m+","+app.i);rnrnrn1,3rnrnrn2、写出输出rnpublic class Jtestrnint m=1;rnint i=3;rnJtest()rnm=2;rni=4;rnrnpublic static void main(String[] args)rnJtest app=new Jtest();rnSystem.out.println(app.m+","+app.i);rnrnrn2,4rnrnrn传实参:rn3、public class Test rn public static void main(String[] args) rnint a=99;rnrnoper(a);rnSystem.out.print(a);rnrn static void oper(int b)rn rn b=b+100;rn rnrn99rnrnrn4、写出输出rnpublic class Test rn public static void main(String[] args) rnString a=new String("A");rnString b=new String("B");rnoper(a,b);rnSystem.out.print(a+","+b);rnrn static void oper(String c,String d)rn c.concat("B");rn d=c;rn rnrnA,Brnrnrn5、写出输出rnpublic class Test rn public static void main(String[] args) rnStringBuffer a=new StringBuffer ("A");rnStringBuffer b=new StringBuffer ("B");rnoper(a,b);rnSystem.out.print(a+","+b);rnrn static void oper(StringBuffer c,StringBuffer d)rn c.append("B");rn d=c;rn rnrnAB,Brnrn
求java高手解答
阅读下列程序,回答问题。rnimport java.awt.*;rnimport java.awt.event.*;rnimport java.applet.*;rnimport javax.swing.*;rnrnpublic class TestChange extends JApplet rn JButton button;rn public void init()rn rn button = new JButton("click here ");rn getContentPane().add(button);rn rnclass ButtonListener implements ActionListener //内部类rn public void actionPerformed(ActionEvent evt)rn JButton b= (JButton)evt.getSource();rn b.setText("you have clicked");rn rn rnrnrn该程序创建包含一个按钮的applet,当点击按钮时将改变按钮的标题。rn为满足要求,对上面代码来说以下哪一个为真?rnA) 监听类需注册到button控件,为此,在JApplet类的init方法中编写以下代码。rn ButtonListener bListener=new ButtonListener();rn button.addActionListener(bListener);rnB) 监听类需注册到button控件,为此,在JApplet类的init方法中编写以下代码rn ButtonListener bListener=new ButtonListener();rn bListener.addActionListener(button);rnC) 不需要改动代码,上述程序将按照要求正常运行得出结果rnD) 按下面给出的,从init方法调用JApplet类的addActionListener方法rn addActionListener(button);rn
JAVA菜鸟求解答!
实现一个泛型集合 要实现泛型集合的基本功能rnrnrn要求,1.有添加,删除,查找,更改的方法。 用list setrn 2.添加map方法,根据键查找值。 用maprnrnrn用集合 泛型的方法完成。。。。完全搞不懂啊!!!!
java求 解答 =============
public class Unchecked rn public static void main(String[] args) rn try rn method();rn catch (Exception e) rn System.out.println("A");//rn finally rn System.out.println("B");//rn rn rnrn static void method() rn try rn wrench();rn System.out.println("C");rn catch (ArithmeticException e) rn System.out.println("D");rn finally rn System.out.println("E");//rn rn System.out.println("F");rn rnrn static void wrench() rn throw new NullPointerException();rn rn输出:rnErnArnBrnrnrnrnrn为什么是这个输出结果??
java编译原理求解答
[code=Java]BufferedReader sin = new BufferedReader(rn new InputStreamReader(System.in));rn System.out.println("Client:"+is.readLine());rn System.out.print("Server:");rn line=sin.readLine();[/code]rnrnrn上面程序是服务端与客户端交互的一小段程序代码~rn写过聊天室的都该知道rn上面的为服务器端的代码~rn当语句执行到System.in不是就堵塞了吗`rn为什么从客户端输入一个字符后`rnSystem.in后面的语句马上就执行了`rn但是我并没有在服务器端输入任何信息`rn请高手解释下`rn
java 求大神解答
public class Usefinrnrn final int a=1;rn int b;rn public void print()rn rn System.out.println("a+b="+a+b);rn rn rn rnrnclass Usefin1rnrn public static void main(String args[] )rn rn Usefin a1=new Usefin();rn a1.b=2;rn a1.print();rn rnrn书上结果为12,自己运行错误为:在类Usefin中找不到住方法
求解答—JAVA练习
编写一个电话本类PhoneBook,要求该类具有按姓名查找(searchByName)、按电话查找(searchByPhoneNum)、按编号查找(searchByPhoneId),添加通讯录(addInfo),删除指定编号(deleteInfo)通讯录等功能(至少要求实现提到的这几种功能)rnrn提示:1、可以在该类内使用一个二维数组来存储电话信息。rn2、添加通讯录时,如果数组已满,则给出提示,否则添加到电话本的末尾。rn3、删除时,如果指定编号的信息不存在,则给出提示。rn
java初学者,求解答
题1:rn a. 创建People类,属性有:name;创建speak()对象方法;rn b. 创建两个People的子类:Chinese、American;rn c. 当Chinese对象调用speak()方法时,需返回字符串:“我说中国话”;rn d. 当American调用speak()方法返回字符串:“i’m speak English”;rn e. main方法中创建创建一个recruit方法,传入一个People类型的数组(数组中包含3个People类型的对象),根据每个speak方法返回值的不同,判断其是中国人还是美国人,新建一个map,将将判断结果存放到map中,如:“sunny:美国人”rnrn题2:rnrn a.创建Engineer类(工程师)属性有:name,Engineer有一个writerCode方法;rnrn b.为Engineer类创建创建两个子类: JavaEngineer类(Java工程师)和iOSEngineer类(iOS工程师),;rnrn c.当“Java工程师”对象调用writerCode方法时,需返回字符串:“在写Java代码”;rnrn d.当“iOS工程师”对象调用writerCode方法时,需返回字符串:“在写iOS代码“;rnrn e.创建测试类,main方法中创建创建一个recruit方法,传入一个Engineer类型的数组(数组中包含3个Engineer类型工程师),根据每个engineer对象执行的writerCode方法不同,区分出该对象到底是什么学科的工程师;并将结果打印到控制台;rnrn比如:rnrn Sunny:iOS开发工程师rnrn Jain:java开发工程师rnrn Tony:iOS开发工程师
Java新手,求解答
public class PersonTest1rnrn public static Person f1(Person p)rn rn p = new Person();rn p.setAge(5);rn return p;rn rnrn public static void main(String[] args)rn rn Person p1 = new Person();rn p1.setAge(10);rn f1(p1);rn p1.sayHello();rnrn rnrnrnrn为什么sayHello输出的年龄不是10,如果我想输出10怎么办?
Java新手求解答
背景:在跟着视频学习类的继承和函数重写:代码如下rnclass Personrn private String name;rn private int age;rn public void setName(String name)rn this.name= name;rn rn public void setAge(int age)rn this.age = age;rn rn public String getName()rn return name;rn rn public int getAge()rn return age; rn rn public String getInfo()rn return "name:"+name+"\n"+"age:"+age;rn rn rn rn class Student extends Personrn private String school;rn public String getSchool()rn return school; rn rn public void setSchool(String school)rn this.school = school;rn rn public String getInfo()rn return "name:"+name+"\n"+"age:"+age+"\n"+"school"+school;rn rn rn rn public class TestPersonrn public static void main(String[] args)rn Student student = new Student();rn Person person = new Person();rn person.setName("none");rn person.setAge(11);rn student.setName("jolin");rn student.setAge(21);rn student.setSchool("SCH");rn System.out.println(person.getInfo());rn System.out.println(student.getInfo());rn System.out.println(student.getSchool());rn rn rn[img=https://img-bbs.csdn.net/upload/201503/12/1426143388_743609.png][/img]rn根据对比 我发现要将30行的name 改成getName,age改成getAge代码可以成功编译rn 问题1 :与17行对比 我就很疑惑。既然是继承就包括继承了成员变量name和age 为什么这里就不可以直接调用了?rn 问题2 : 还有我试了下如果把30行的name 改成student.name 还是不行rn 同样的改成this.name还是出错。rn这里问题比较杂 求大神解答rn
求解答,java web
[size=18px][b]别人开发了一个网站,然后源码交给我后,我俩是同一个版本Myeclipse10,同一个MySQL数据库rn然后网站页面在我电脑上都好使,后台也能进去,但是后台操作却不好使,比如提交按钮就报错,rn而程序在他电脑上就完全好使。[/b][/size][color=#333399][/color]rn这是什么情况,已验证程序一定没有错。这怎么解决?
求Java朋友解答
Math.sin(30*Math.PI/180)结果为0.49999999999999994 不等于0.5 应该怎么处理才能使结果为0.5
java求解答
package test;rnclass Candy rnstatic System.out.println("Loading Candy"); rnrnrnclass Gum rnstatic System.out.println("Loading Gum"); rnrnrnclass Cookie rnstatic System.out.println("Loading Cookie"); rnrnrnpublic class SweetShop rnpublic static void main(String[] args) rn System.out.println("inside main");rnnew Candy();rnSystem.out.println("After creating Candy");rntry rnClass.forName("Candy"); rn catch(ClassNotFoundException e) rn System.out.println("Couldn’t find Candy");rnrnSystem.out.println("After Class.forName(\"Candy\")");rnnew Cookie();rnSystem.out.println("After creating Cookie");rnrnrnrnrnrnrn输出结果:rninside mainrnLoading CandyrnAfter creating CandyrnCouldn’t find Candy //这个结果为什么是这样rnAfter Class.forName("Candy")rnLoading CookiernAfter creating Cookiern
java基础求解答
public class Test rn static rn x = 5;// 不报错rn System.out.println(x);// 编译报错 rn rn static int x, y;rn}rn求解答 为什么x=5不报错,System.out.println(x)报错
字符串的替换
字符串的替换 不用string.h等包含的函数. 纯char 文件读入存储.
字符串-替换
字符串 C/C++中字符串以‘\0’结尾,容易发生越界。常量字符串放在特定区域,当几个指针赋值给相同的字符串常量时,它们指向相同的地址。 char str1[]=“hello”; char str2[]=“hello”; str != str2因为这是两个初始地址不同的数组 char *str3 =“hello”; char *str4 =“hello”; str3==str4 ...
字符串 替换
1要替换成apple,2要替换成pear,3要换成banana,4要换成orange。rnrn这样的话,从数据库里读出来是23 。结果是pearbanana。rn1234 ===applepearbananaorange。rnrn就是要写一个这样的函数,根据数据查出来的数据换成水果名。rnrn简洁的函数最好,不胜感激
求解答求解答
一般公司招C++程序员是写什么样的程序?windows程序还是什么?rnC++到底能写些什么东西?rn一直说写游戏写游戏,但是我就是不明白怎么写游戏?rnVC++?MFC?API?我怎么感觉这三样都是另外的语言啊???????
字符串的替换?
有一不固定的字符串如“This is a boy",我想将其中的”is“字符替换成其他字符,如果使用replace函数会将”This“中的is也替换掉。rn如何才能实现全字匹配的替换字符串呢
******字符串的替换*********
asdfdasfasfasdfasfsafasdfsadfsafrnasdfasdfadfasdfasfasdfasfrnasdfsadfafasdfasdfasdfrnasdfasdfasdfsadfasdfsaffffrnrn大家仔细看下。我想去掉上面文本中的所有<>号中的东西。和<>也一起去掉。
相关热词 c++和c#哪个就业率高 c# 批量动态创建控件 c# 模块和程序集的区别 c# gmap 截图 c# 验证码图片生成类 c# 再次尝试 连接失败 c#开发编写规范 c# 压缩图片好麻烦 c#计算数组中的平均值 c#获取路由参数