Android 结构化查找和替换 XML

标签 android regex xml

我正在尝试在我的资源中查找 View 包含 background="@+id/play_bubble"的实例,并将该 View 替换为自定义 View Bubble。

所以当前的 View 看起来像这样:

<View
    android:id="@+id/obstacle3"
    android:layout_height="@dimen/obstacle_width"
    android:layout_width="@dimen/obstacle_width"
    android:background="@drawable/play_bubble"
    android:layout_alignParentLeft="true"
    android:layout_above="@id/obstacle2" />

我希望它找到包含特定背景的所有 View 对象,而不考虑其他属性。不过我没有得到任何结果。

替换后的最终结果应该是这样的:

<Bubble
    android:id="@+id/obstacle3"
    android:layout_height="@dimen/obstacle_width"
    android:layout_width="@dimen/obstacle_width"
    android:background="@drawable/play_bubble"
    android:layout_alignParentLeft="true"
    android:layout_above="@id/obstacle2" />

非常感谢任何帮助。

编辑:

这是我正在处理的界面。我根本不熟悉正则表达式,所以我不确定我输入的内容是否正确,但它没有返回任何结果。 Find/Replace

最佳答案

既然您提到了简单的查找/替换,那么这个正则表达式应该可以做到。

查找:<View(\s+[^>]*?)background="@\+id/play_bubble"([^>]*?/>)
替换:<Bubble$1background="something_new"$2

格式化:

 <View
 (                                  # (1 start)
      \s+ 
      [^>]*? 
 )                                  # (1 end)
 background="@\+id/play_bubble"
 (                                  # (2 start)
      [^>]*? 
      />
 )                                  # (2 end)

关于Android 结构化查找和替换 XML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34122402/

相关文章:

android - 仅在发布时自动增加版本代码

Android 在 Web View 中加载图像

android - Firebase Jobdispatcher - 现在开始并重复

c# - 如何验证以色列电话号码?

javascript - 从字符串中删除除智能引号之外的所有非 ASCII 字符

java - 在 Java 8 中,使用 Woodstox 运行时 namespace 前缀会发生变化

android - GL_COLOR_MATERIAL 在 Android 上带有照明

c# - 正则表达式,提取编号列表(多行)

android - ListView 在列表下方和上方留出额外空间

c# - 如何在 c# 中制作一个 xml 文件以与作为数据表导入的 .iqy 一起使用