如何使用一个正则表达式模式使String成为Java中的另一个正则表达式模式?

时间:2015-11-01 01:15:25

标签: java regex

提供一个简单的例子可以提供我不需要的解决方案,而替代解决方案将无法工作,因为我需要解决更复杂的模式。

假设你有一个字符串123.321

此字符串可以用正则表达式表示为 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" android:background="#ffffff"> <LinearLayout android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="wrap_content" android:padding="8dp" android:background="#0a608e" android:gravity="center_horizontal"> <ImageButton android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/gobackb" android:background="?android:selectableItemBackground" tools:targetApi="honeycomb" android:src="@drawable/whitearrows" android:padding="10dp" /> <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:textAppearance="?android:attr/textAppearanceLarge" android:text="Daily report dispatch time" android:textColor="#ffffff" android:textSize="20sp" android:gravity="center_horizontal" android:paddingTop="10dp" android:paddingRight="15dp" /> </LinearLayout> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:textAppearance="?android:attr/textAppearanceMediumInverse" android:text="Set daily report dispatch time " android:id="@+id/textView33" android:textColor="#ffffff" android:background="#074363" android:padding="10dp" /> <LinearLayout android:orientation="vertical" android:layout_width="match_parent" android:layout_height="wrap_content"> <TimePicker android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/timePicker1" android:layout_gravity="center_horizontal" /> </LinearLayout> <LinearLayout android:orientation="horizontal" android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center_horizontal" android:padding="10dp"> <Button android:id="@+id/startSetDialog" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Set Target Time"/> <Button android:id="@+id/cancel" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Cancel Alarm"/> </LinearLayout> <TextView android:id="@+id/alarmprompt" android:layout_width="fill_parent" android:layout_height="wrap_content" /> </LinearLayout> 我想做的是替换&#34;。&#34;用&#34;,&#34;获得123,321。

因此,我希望正则表达式模式[0-9]*\\.[0-9]*成为正则表达式模式[0-9]*\\.[0-9]*

是否可以指示两个正则表达式模式并使与第一个模式匹配的String成为与第二个模式匹配的String?

我该怎么做?

最简单的解决方案是什么?

1 个答案:

答案 0 :(得分:1)

您可以使用\\d*匹配可选数字,并将数字匹配与()分组。然后使用String.replaceAll(String, String)之类的

String str = "123.321";
if (str.matches("\\d*\\.\\d*")) {
  str = str.replaceAll("(\\d*)\\.(\\d*)", "$1,$2");
}
System.out.println(str);

输出(按要求)

123,321