正则如何实现此功能?解决了送200分

lihan6415151528 2009-04-30 10:36:41
一个字符串,
String str1 = "<field indicator="aaaaaa" name="100"><field  indicator="bbb" name="200">";

转换成
String str2 = "<field name="100" indicator="aaaaaa"><field name="200" indicator="bbb">";


就是name属性和indicator属性换位置,前提属性值长度不定

在线等~,解决了送全部分数
...全文
184 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
GeekZFZ 2009-04-30
  • 打赏
  • 举报
回复
路过学习
  • 打赏
  • 举报
回复
...帮顶吧
huohuli005 2009-04-30
  • 打赏
  • 举报
回复
自己也学习了~
huohuli005 2009-04-30
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 MT502 的回复:]
Java code
String str1 = "<field indicator=\"aaaaaa\" name=\"100\"><field indicator=\"bbbb\" name=\"200\">";
str1 = str1.replaceAll("((<field indicator=\")([^\"]*)\"( name=)\"([^\"]*)\"(>))", "$2$5$4$3$6");
System.out.println(str1);


[/Quote]

6楼基本实现不过有点差异,根据6楼的改了一下,应该可以吧。

String str1 = "<field indicator=\"aaaaaa\" name=\"100\"><field indicator=\"baassb\" name=\"200\"><field indicator=\"baasd\" name=\"34234\">";
str1 = str1.replaceAll("((<field)( indicator=\"[^\"]*\")( name=\"[^\"]*\")(>))", "$2$4$3$5");
System.out.println(str1);


  • 打赏
  • 举报
回复
改一下

public class Test3 {

public static void main(String[] args) throws IOException {
String str = "<field abc=\"123\" indicator=\"aaaaaa\" name=\"100\">" +
"<field indicator=\"bbbb\" name=\"200\">" +
"<field indicator=\"aaaaaa\" abc=\"123\" name=\"100\">\n" +
"<FIELD ABC=\"123\" INDICATOR=\"AAAAAA\" NAME=\"100\">" +
"<FIELD INDICATOR=\"BBBB\" NAME=\"200\">" +
"<FIELD indicator=\"AAAAAA\" ABC=\"123\" NAME=\"100\">";
String regex = "(?i)(<field[^>]*)(indicator\\s*=\\s*\"[^\"]*\")([^>]+)(name\\s*=\\s*\"[^\"]*\")([^>]*>)";

System.out.println(str);
System.out.println();

str = str.replaceAll(regex, "$1$4$3$2$5");
System.out.println(str);
}
}
  • 打赏
  • 举报
回复
public class Test3 {

public static void main(String[] args) throws IOException {
String str = "<field abc=\"123\" indicator=\"aaaaaa\" name=\"100\">" +
"<field indicator=\"bbbb\" name=\"200\">" +
"<field indicator=\"aaaaaa\" abc=\"123\" name=\"100\">\n" +
"<FIELD ABC=\"123\" INDICATOR=\"AAAAAA\" NAME=\"100\">" +
"<FIELD INDICATOR=\"BBBB\" NAME=\"200\">" +
"<FIELD indicator=\"AAAAAA\" ABC=\"123\" NAME=\"100\">";
String regex = "(?i)(<field[^>]*)(indicator)\\s*=\\s*\"([^\"]*)\"([^>]+)(name)\\s*=\\s*\"([^\"]*)\"([^>]*>)";

System.out.println(str);
System.out.println();

str = str.replaceAll(regex, "$1$5=\"$6\"$4$2=\"$3\"$7");
System.out.println(str);
}
}
  • 打赏
  • 举报
回复
是要把所有的都替换,还是只要换 field 标签中的?

另外,field 中还会有其他属性么?

MT502 2009-04-30
  • 打赏
  • 举报
回复
String str1 = "<field indicator=\"aaaaaa\" name=\"100\"><field indicator=\"bbbb\" name=\"200\">";
str1 = str1.replaceAll("((<field indicator=\")([^\"]*)\"( name=)\"([^\"]*)\"(>))", "$2$5$4$3$6");
System.out.println(str1);
cjg520jie 2009-04-30
  • 打赏
  • 举报
回复
[Quote=引用楼主 lihan6415151528 的帖子:]
一个字符串,
Java codeString str1="<field indicator="aaaaaa"name="100"><field indicator="bbb"name="200">";
转换成
Java codeString str2="<field name="100"indicator="aaaaaa"><field name="200"indicator="bbb">";

就是name属性和indicator属性换位置,前提属性值长度不定

在线等~,解决了送全部分数
[/Quote]

正则表达式去匹配,同时匹配indicator和name,匹配到了就把indicator替换成name,把name替换成indicator就行了,只能进行一次,也就是说不能让indicator变成name后又重新开始检索,负责会把刚替换好的又替换回去
SimonYeung 2009-04-30
  • 打赏
  • 举报
回复
学习 学习
才学正则还不太熟悉
西瓜 2009-04-30
  • 打赏
  • 举报
回复
确实有点难度!
顶一个
kokobox 2009-04-30
  • 打赏
  • 举报
回复
lihan??????
kk1235201 2009-04-30
  • 打赏
  • 举报
回复
谁摘掉呢
  《正则表达式入门经典》详细解释了正则表达式的各个组成部、这些组成部的含义、如何使用它们,以及在编写正则表达式时如何避免常见的错误。正则表达式能够帮助用户和开发人员更加有效地查找和操纵文本内容。而且,正则表达式已经得到了许多脚本语言、编程语言和数据库的良好支持。这本示例丰富的教程将打破所谓正则表达式难以掌握的传统神话。   通过逐章地讲解如何在流行的Windows平台的软件——包括数据库、跨平台的脚本语言和编程语言中使用正则表达式,你将学习到如何有效地驾驭正则表达式所提供的强大功能,并且全面理解正则表达式的高度灵活性和无限潜能。   ·正则表达式的基本概念以及如何编写正则表达式   ·如何解文本操作问题并构建符合逻辑的正则表达式模式   ·如何在不同的脚本或编程语言以及软件包中使用正则表达式   ·当前各种正则表达式实现之间存在的差别   ·可以解决日常问题的、可重用的正则表达式示例代码   《正则表达式入门经典》读者对象   《正则表达式入门经典》适用于那些需要解决文本操作问题,但还不了解正则表达式的开发人员。虽然一些基本的编程或脚本编写经验是有用的,但并不是必需的。   《正则表达式入门经典》技术支持从Web站点www.wrox.com和www.tupwkcom.cn/downpage上可以获取《正则表达式入门经典》的源代码和Wrox技术支持。

62,616

社区成员

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

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