用一个字符串替换另一个字符串的指定样子的子串,但替换包含该字符串中被特殊符号包含的指定样子的子串,这个怎么做?

weixin_38974328 2018-03-01 07:37:56
举例子说明

例子::
字符串1:学生名字='张三' or 学生姓名='学生姓名' or 学生姓名='学生姓名sadasd'

需求:将 这个字符串中非被引号包含的子串中所有的 学生姓名 子串 全部替换成 stuName,“被引号包含的子串中”,这句话的意思是指,如果2个引号之内含有 学生姓名 ,则这个引号内的 学生姓名 子串不替换。

替换的结果为 stuName='张三' or stuName='学生姓名' or stuName='学生姓名sadasd'

如果一个字符串的引号数量是奇数,则直接抛出自定义异常说明

怎么样替换所有非引号包含的指定子串?
...全文
513 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
weixin_39670158 2018-03-02
  • 打赏
  • 举报
回复
1.正则判断格式是否正确 2学生名字= 换成 stuName=
rickylin86 2018-03-02
  • 打赏
  • 举报
回复
没事没事。能解决你的需求就可以了
引用 5 楼 weixin_38974328 的回复:
[quote=引用 2 楼 rickylin86 的回复:]

public class Test{
	public static void main(String[] args){
		String content = "学生姓名='张三' or 学生姓名='学生姓名'  or 学生姓名='学生姓名sadasd'";
		process(content);
	}

	private static void process(String content){
		String withoutQuotation = content.replaceAll("'","");
		if((content.length() - withoutQuotation.length()) % 2 != 0){
			System.out.printf("'%s' is invalid!\n",content);
			throw new RuntimeException("invalid content");
		}
		String regex = "学生姓名(?=([^']*?'[^']*'[^']*)*$)";
		String result = content.replaceAll(regex,"stuName");
		System.out.println(result);
	}
}
result: ---------- java ---------- stuName='张三' or stuName='学生姓名' or stuName='学生姓名sadasd' Output completed (0 sec consumed) - Normal Termination
给错分了,怎么改回给你啊?[/quote]
weixin_38974328 2018-03-02
  • 打赏
  • 举报
回复
引用 2 楼 rickylin86 的回复:

public class Test{
	public static void main(String[] args){
		String content = "学生姓名='张三' or 学生姓名='学生姓名'  or 学生姓名='学生姓名sadasd'";
		process(content);
	}

	private static void process(String content){
		String withoutQuotation = content.replaceAll("'","");
		if((content.length() - withoutQuotation.length()) % 2 != 0){
			System.out.printf("'%s' is invalid!\n",content);
			throw new RuntimeException("invalid content");
		}
		String regex = "学生姓名(?=([^']*?'[^']*'[^']*)*$)";
		String result = content.replaceAll(regex,"stuName");
		System.out.println(result);
	}
}
result: ---------- java ---------- stuName='张三' or stuName='学生姓名' or stuName='学生姓名sadasd' Output completed (0 sec consumed) - Normal Termination
给错分了,怎么改回给你啊?
weixin_38974328 2018-03-02
  • 打赏
  • 举报
回复
给错分了,怎么改回去啊?
rickylin86 2018-03-01
  • 打赏
  • 举报
回复

public class Test{
	public static void main(String[] args){
		String content = "学生姓名='张三' or 学生姓名='学生姓名'  or 学生姓名='学生姓名sadasd'";
		process(content);
	}

	private static void process(String content){
		String withoutQuotation = content.replaceAll("'","");
		if((content.length() - withoutQuotation.length()) % 2 != 0){
			System.out.printf("'%s' is invalid!\n",content);
			throw new RuntimeException("invalid content");
		}
		String regex = "学生姓名(?=([^']*?'[^']*'[^']*)*$)";
		String result = content.replaceAll(regex,"stuName");
		System.out.println(result);
	}
}
result: ---------- java ---------- stuName='张三' or stuName='学生姓名' or stuName='学生姓名sadasd' Output completed (0 sec consumed) - Normal Termination
  • 打赏
  • 举报
回复
把字符串加到数组或者集合里,然后用循环替换就行了

62,614

社区成员

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

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