【问题标题】:How to sort strings.xml alphabetically in Android Studio如何在 Android Studio 中按字母顺序对 strings.xml 进行排序
【发布时间】:2016-06-05 00:09:57
【问题描述】:

您好,有没有办法在 strings.xml 中按字母顺序对字符串名称进行排序? 它应该像这样排序

之前

 <string name="ccc">CText</string>
 <string name="aaa">AText</string>
 <string name="bbb">BText</string>

之后

 <string name="aaa">AText</string>
 <string name="bbb">BText</string>
 <string name="ccc">CText</string>

我使用的是 Android Studio 1.5.1

【问题讨论】:

标签: android-studio intellij-idea


【解决方案1】:

我使用了 AndroidXmlSorter 插件,它非常适合我。

如何安装: 转到 Android Studio -> Preferences -> Plugins 并点击 Browse repositories.. 搜索 AndroidXmlSorter,安装并重新启动您的 Android Studio。转到您的 strings.xml 文件并点击 Ctrl+L。瞧。

免责声明:我不是这个插件的作者,我只是偶然发现它,我认为所有的功劳都应该归插件作者所有。仓库在这里:https://github.com/roana0229/android-xml-sorter

【讨论】:

  • 感谢插件,我试过了,但它似乎不适用于 AS 2.2+
  • 这里的窗口。似乎那个项目无论如何都被放弃了。
  • 刚刚尝试过并在 Windows 上完美地为我工作,但是提到的快捷键不起作用。我必须右键单击我的 XML,然后重构 -> 按名称排序 XML。
  • 看来这个项目并没有被放弃。在撰写本文时,此插件已在一个月前更新。在 Intellij 2018.2 上像魅力一样工作。
  • 2020 年 6 月与 Android Studio 4.0 一起工作
【解决方案2】:

对于遇到此问题的任何其他人。复制所有字符串元素,粘贴到 Excel 电子表格中,按 A-Z 排序,然后复制并粘贴回来。

[Sort Android strings.xml in Alphabetical Order]

【讨论】:

    【解决方案3】:

    有一个名为Lines Sorter 的插件可以对选定的行或整个文件进行排序。

    【讨论】:

      【解决方案4】:

      很遗憾,AndroidXmlSorter 在对多行字符串进行排序时对我不起作用。

      我的解决方案:根据我的android_strings_format.xslt(使用 xsltproc)对strings.xml 进行排序并重新格式化(使用 xmllint)。

      缺点:您必须执行脚本。因此,它并不是 Android Studio 真正的原生特性。但您可以在 Android Studio 中轻松执行脚本。

      脚本:

      #!/bin/sh
      
      sort_xml_file() {
        xsltproc --output "$1" android_strings_format.xslt "$1"
        export XMLLINT_INDENT="    "
        xmllint --format --encode "utf-8" --output "$1" "$1"
      }
      
      sort_xml_file "src/main/res/values/strings.xml"
      

      android_strings_format.xslt 文件:

      <?xml version="1.0" encoding="UTF-8"?>
      <xsl:stylesheet version="1.0"
      xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
      
      <xsl:output 
          method="xml" 
          version="1.0" 
          encoding="UTF-8" 
          indent="yes" 
          omit-xml-declaration="yes"/>
      
      <xsl:template match="/resources">
          <resources>
      
      <xsl:for-each select="string">
      <xsl:sort select="@name"/>
      <string name="{@name}">
          <xsl:copy-of select="@* | node()"/>
      </string>
      </xsl:for-each>
      
      </resources>
      </xsl:template>
      
      </xsl:stylesheet>
      

      适用于 Manjaro Linux x64。

      编辑:我找到了一种防止多行文本的方法。我可以用引号将文本括起来。 &lt;string name="available_version_error"&gt;"&lt;u&gt;ERRORa&lt;/u&gt;"&lt;/string&gt;

      【讨论】:

        【解决方案5】:

        我会将它们转换为 ASCII,然后对其进行排序并将它们转换回字符串,非常简单且非常有效

        【讨论】:

          【解决方案6】:

          更新:最简单的方法是:Ctrl+A 然后 Ctrl+Alt+L

          对于配置:在Android studio中,您可以通过以下步骤快速排序XML代码:

          1. 通过Ctrl+A选择文件中的所有XML代码
          2. 使用组合:Ctrl+Alt+Shift+L
          3. 选择“选定文本”+“重新排列代码”,然后按运行

          【讨论】:

          • 我不知道为什么,但这在我的编辑器 Android Studio 3.1.2 中不起作用。
          • AFAIK,这仅适用于单个元素中的属性。不移动元素。
          猜你喜欢
          • 2023-03-08
          • 2013-11-09
          • 2011-08-29
          • 2010-11-23
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多