字符串替换

xiyaopo 2018-02-06 11:53:07
getQuYu/getQu.action?quid=23&cufajc=st&mudijc=cz
getQuYu/getQu.action?quid=23&mudijc=cz&cufajc=st
getQuYu/getQu.action?cufajc=st&mudijc=cz&quid=23
java 如何用其他字符替换cufajc= 和后面第一个&之间的字符即st,当然st是可变的 ,但如果他在最后就没有&了
...全文
1287 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
nyhyn 2018-02-06
  • 打赏
  • 举报
回复
    /**
     * 
     * @param src
     * @param key 不包含=
     * @return
     */
    public static String replace(String src, String key) {
    	int index = src.indexOf(key);
    	// 从=号后面的字符开始查找
    	int endIndex = index + key.length() + 1;
		int nextIndex = src.indexOf("&", endIndex);
    	
    	return src.substring(0, endIndex) + (nextIndex > -1 ? src.substring(nextIndex) : "");
    }
测试代码: String key ="cufajc"; String s = "getQuYu/getQu.action?quid=23&cufajc=st&mudijc=cz"; System.out.println(replace(s, key)); s = "getQuYu/getQu.action?quid=23&mudijc=cz&cufajc=st"; System.out.println(replace(s, key)); s = "getQuYu/getQu.action?cufajc=st&mudijc=cz&quid=23"; System.out.println(replace(s, key));
nyhyn 2018-02-06
  • 打赏
  • 举报
回复
    /**
     * 
     * @param src
     * @param key 不包含=
     * @param replaceStr 替换后的字符串
     * @return
     */
    public static String replace(String src, String key, String replaceStr) {
    	int index = src.indexOf(key);
    	// 从=号后面的字符开始查找
    	int endIndex = index + key.length() + 1;
		int nextIndex = src.indexOf("&", endIndex);
    	
    	return src.substring(0, endIndex) + replaceStr + (nextIndex > -1 ? src.substring(nextIndex) : "");
    }
哈哈,测试代码就你自己加个参数了
  • 打赏
  • 举报
回复
引用 7 楼 xiyaopo 的回复:
[quote=引用 6 楼 LinBilin_ 的回复:] [quote=引用 楼主 xiyaopo 的回复:] getQuYu/getQu.action?quid=23&cufajc=st&mudijc=cz getQuYu/getQu.action?quid=23&mudijc=cz&cufajc=st getQuYu/getQu.action?cufajc=st&mudijc=cz&quid=23 java 如何用其他字符替换cufajc= 和后面第一个&之间的字符即st,当然st是可变的 ,但如果他在最后就没有&了
我写的那个方法不是你想要的吗?[/quote] 不好意思我水平有限,应该是我不懂用, 就是说我要用一个变量例如String cf=“bj";去替换cufajc= 和后面第一个&之间的字符串,应该怎么传入cf这个变量。 叩谢!!![/quote] 方法不理解没关系,我不是给你调用的例子了吗?如果那样还看不懂,那我也无能为力了
xiyaopo 2018-02-06
  • 打赏
  • 举报
回复
引用 6 楼 LinBilin_ 的回复:
[quote=引用 楼主 xiyaopo 的回复:] getQuYu/getQu.action?quid=23&cufajc=st&mudijc=cz getQuYu/getQu.action?quid=23&mudijc=cz&cufajc=st getQuYu/getQu.action?cufajc=st&mudijc=cz&quid=23 java 如何用其他字符替换cufajc= 和后面第一个&之间的字符即st,当然st是可变的 ,但如果他在最后就没有&了
我写的那个方法不是你想要的吗?[/quote] 不好意思我水平有限,应该是我不懂用, 就是说我要用一个变量例如String cf=“bj";去替换cufajc= 和后面第一个&之间的字符串,应该怎么传入cf这个变量。 叩谢!!!
  • 打赏
  • 举报
回复
引用 楼主 xiyaopo 的回复:
getQuYu/getQu.action?quid=23&cufajc=st&mudijc=cz getQuYu/getQu.action?quid=23&mudijc=cz&cufajc=st getQuYu/getQu.action?cufajc=st&mudijc=cz&quid=23 java 如何用其他字符替换cufajc= 和后面第一个&之间的字符即st,当然st是可变的 ,但如果他在最后就没有&了
我写的那个方法不是你想要的吗?
xiyaopo 2018-02-06
  • 打赏
  • 举报
回复
引用 1 楼 nyhyn 的回复:
    /**
     * 
     * @param src
     * @param key 不包含=
     * @return
     */
    public static String replace(String src, String key) {
    	int index = src.indexOf(key);
    	// 从=号后面的字符开始查找
    	int endIndex = index + key.length() + 1;
		int nextIndex = src.indexOf("&", endIndex);
    	
    	return src.substring(0, endIndex) + (nextIndex > -1 ? src.substring(nextIndex) : "");
    }
测试代码: String key ="cufajc"; String s = "getQuYu/getQu.action?quid=23&cufajc=st&mudijc=cz"; System.out.println(replace(s, key)); s = "getQuYu/getQu.action?quid=23&mudijc=cz&cufajc=st"; System.out.println(replace(s, key)); s = "getQuYu/getQu.action?cufajc=st&mudijc=cz&quid=23"; System.out.println(replace(s, key));
那这样我要用一个变量替换怎么办?例如我用String cf=“bj";我要得到的结果是"getQuYu/getQu.action?cufajc=bj&mudijc=cz&quid=23"; 我应该从哪传入cf
  • 打赏
  • 举报
回复

public static void main(String[] args) {
Map<String,String> parameters=new LinkedHashMap<String,String>();
parameters.put("quid", "1");
parameters.put("cufajc", "2");
parameters.put("mudijc", "3");
String str="getQuYu/getQu.action?quid=23&cufajc=st&mudijc=cz&kkmudijc=cz";
String result=resetParameters(parameters, str);
System.out.println(str);
System.out.println(result);
}
/**
* 重置查询条件
* @param parameters
* @param targetStr
* @return
*/
public static String resetParameters(Map<String,String> parameters,String targetStr){
Set<String> keys=parameters.keySet();
String regex=null;
for(String key:keys){
regex="\\b"+key+"=[^&]+";
targetStr=targetStr.replaceAll(regex, key+"="+parameters.get(key));
}
return targetStr;
}

握草 2018-02-06
  • 打赏
  • 举报
回复
正则表达式?

62,612

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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