我正在嘗試讀取XML文件,並在使用textSize屬性的文本中隨處取代dp
和sp
。例如android:textSize="8dp"
將與android:textSize="8sp"
被替換,如果下面的文件將被處理:用正則表達式替換文件中的文本
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content" >
<TextView
android:id="@+id/description"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="8dp"/>
<View
android:layout_width="wrap_content"
android:layout_height="5dp" />
</LinearLayout>
我有以下代碼:
patternDp = /android:textSize=\"[\d]+dp\"/
content = File.read("layout/some_layout.xml")
content.gsub!(patternDp, "???")
我知道gsub!
方法的第二個參數是字符串這將取代該模式,並且我在如何使用該方法時遇到一些困難,以至於該方法不能用該模式替換整個android:textSize="8dp"
與sp
,而是僅使用dp
字符串。
希望得到任何幫助,如果我的方法不正確,請告訴我如何以另一種方式解決問題。
不要用正則表達式解析XML;除了控制XML生成的最簡單情況之外,正則表達式不是那麼好的工具。如果XML格式發生變化,您的模式將很可能會中斷。在* THIS *的情況下,你可以用一個簡單的'gsub'離開,因爲你並不想匹配標籤,但大多數情況下,使用Nokogiri會更好,並學會以正確的方式解析XML/HTML。 –
很高興知道,謝謝。 –