-2

我有一个像这样的字符串:

<scale_1>0</scale_1><scale_2>0</scale_2><scale_3>0</scale_3>

我需要以某种方式处理它以获得:

<scale>0</scale><scale>0</scale><scale>0</scale>

我不擅长正则表达式,我不知道如何编写一个正则表达式来匹配字符串<scale_末尾的数字。

我试过了:

String str = "<scale_1>0</scale_1><scale_2>0</scale_2><scale_3>0</scale_3>";
System.out.println(str.replaceAll("[<scale_1\\d+>]", "scale"));

但这只是打印

scalescalescalescalescalescalescalescalescalescalescale/scalescalescalescalescalescalescalescalescalescalescalescalescalescalescalescalescalescalescale/scalescalescalescalescalescalescalescalescalescalescalescalescalescalescalescalescalescalescale/scalescalescalescalescalescalescalescale*

有人可以帮我解决这个问题吗?

4

6 回答 6

3

您可以简单地使用正则表达式替换全部_\d并替换字符串""

于 2013-05-22T13:02:10.523 回答
2

您可以使用正则表达式:

string.replaceAll("_[0-9]+", "");
于 2013-05-22T13:04:44.830 回答
2

这个正则表达式应该满足您的需求:

str.replaceAll("(</?scale)_[0-9]+(>)", "$1$2");

干杯。

于 2013-05-22T13:07:29.410 回答
1

该类String提供了一个replaceAll()使用正则表达式的方法。

 String newString = oldString.replaceAll("_\\d+","");

http://docs.oracle.com/javase/7/docs/api/java/lang/String.html

这是一个非常基本的正则表达式。你可能想看看:http ://docs.oracle.com/javase/tutorial/essential/regex/

于 2013-05-22T13:05:19.623 回答
0

尝试这个:

str = str.replaceAll("scale_\\d+", "scale");
于 2013-05-22T13:05:14.043 回答
0
String str = "<scale_1>0</scale_1><scale_2>0</scale_2><scale_3>0</scale_3>";
str.replaceAll("<(/?)scale_\\d>", "<$1scale>");
System.out.println(str.replaceAll("<(/?)scale_\\d>", "<$1scale>"));
于 2013-05-22T13:25:18.103 回答