关于字符串替换的通用的问题?

starts 2003-08-11 06:19:03
public StringBuffer ReplaceString(ResultSet rs ,StringBuffer sSource);

问题:
create table table1 (
name varchar(30),
password varchar(40),
leaveDate DateTime
)

select name ,password ,leaveDate from table1

字符
String a1 = "asfdas@name@kasjfaskfd@password@;lasjdfal;s @name@wewerw @leaveDate@;alskdjfaslkf";

查询出来的结果集 替换 字符串中的@@中的值.
例如
查询结果
mike 1234 2003-09-09

asfdasmikekasjfaskfd1234;lasjdfal;s mikewewerw 2003-09-09;alskdjfaslkf
...全文
23 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
scbb 2003-08-12
  • 打赏
  • 举报
回复
public static String replace(String source,String[] args)
{
//if(source == null || args == null ||(args.length != source.
int start = 0;
StringBuffer buffer = new StringBuffer(source);
for(int i=0;i<args.length;i++)
{
int postion = source.indexOf("%",start);
if((postion == -1) || ((postion+1) == source.length()))
{
break;
}
switch(source.charAt(postion + 1))
{
case 's':
buffer.delete(postion,postion + 2);
buffer.insert(postion,args[i]);
break;
}
start = postion + args[i].length();
source = buffer.toString();
}
return source;
}
public static void main(String[] args)
{
System.out.println(replace("abc%s%s123%s",new String[]{"abc","cde","slfjslf"}));
System.out.println();
}

这个比较通用, 不论个数的, 你把要替换的东西放到一个String 数组里在调用自定义的replace方法就可以了。

这个例子是替换%s, 你可以改一下。

ashes 2003-08-11
  • 打赏
  • 举报
回复
import java.util.regex.*;
import java.util.*;

public class AtReplace {
public AtReplace() {
}

public static void main(String[] args) throws Throwable {
String a1 = "asfdas@name@kasjfaskfd@password@;lasjdfal;s @name@wewerw @leaveDate@;alskdjfaslkf";
StringBuffer result = new StringBuffer();
Map map = new HashMap();

map.put("@name@", "mike");
map.put("@password@", "1234");
map.put("@leaveDate@", "2003-09-09");

Pattern p = Pattern.compile("(@name@)|(@password@)|(@leaveDate@)");
Matcher m = p.matcher(a1);
while(m.find()) {
m.appendReplacement(result, (String)map.get(m.group()));
}
m.appendTail(result);
System.out.println(result);
}

}
nil2000 2003-08-11
  • 打赏
  • 举报
回复
看在分的分上,给你写全了
public void test2() {
String a1 = "asfdas@name@kasjfaskfd@password@;lasjdfal;s @name@wewerw @leaveDate@;alskdjfaslkf";
String name = "mike";
String password = "1234";
String leaveDate = "2003-09-09";

System.out.println(a1);
a1 = replaceString(a1,"@name@",name);
a1 = replaceString(a1,"@password@",password);
a1 = replaceString(a1,"@leaveDate@",leaveDate);
System.out.println(a1);
}

public String replaceString(String whole,String source,String dest) {
StringBuffer buff = new StringBuffer();
int pos0 = 0;
int pos1 = whole.indexOf(source,pos0);

while(pos1 != -1) {
buff.append(whole.substring(pos0,pos1));
buff.append(dest);
pos0 = pos1 + source.length();
pos1 = whole.indexOf(source,pos0);
}
buff.append(whole.substring(pos0));
return buff.toString();
}

tianlinyi 2003-08-11
  • 打赏
  • 举报
回复
字符串解析类问题
查询结果保存在数组中
建立一个新的变量,拷贝字符到其中直到第一个@,然后把数组中的结果考到新串,继续读取源串,不拷贝字符直到第二个@,依次类推。。。
devSteven 2003-08-11
  • 打赏
  • 举报
回复
反了 :D
devSteven 2003-08-11
  • 打赏
  • 举报
回复
string.split("@");
[单数]保留
[双数]替换

67,513

社区成员

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

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