按自定义顺序对字符串数组进行排序

2023-12-13

我想按照我提到的顺序对字符串数组中的一组固定字符串进行排序,例如“文本文件”,“图像文件”,“音频文件”,“视频文件”,“应用程序文件”,“其他文件” 。

示例1,如果我的字符串数组输入是这样的

inputval[0] = "Other files";
inputval[1] = "Image files";
inputval[2] = "Text files";

我的输出数组应该有这样的值

outputval[0] = "Text files";
outputval[1] = "Image files";
outputval[2] = "Other files";

示例2,如果我的字符串数组输入是这样的

inputval[0] = "Application files";
inputval[1] = "Image files";
inputval[2] = "Video files";

我的输出数组应该有这样的值

outputval[0] = "Image files";
outputval[1] = "Video files";
outputval[2] = "Application files";

请有人帮助我实现这一目标


这个粗略的实现使用IComparer<string>供应给Array.Sort作品。有各种潜在的缺点,但我将把这些留给您(例如字符串需要完全匹配,否则它们将无法正确排序)。

它只是使用表示正确顺序的内部字符串列表,然后将该列表中的序数相互比较。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication61
{
    class Program
    {
        static void Main(string[] args)
        {
            string[] files = new[] { "Audio Files", "Text Files", "Video Files", "Other Files", "Application Files" };
            Array.Sort(files, new FileComparer());
            Console.Read();
        }
    }

    class FileComparer : IComparer<string>
    {
        static List<string> OrderedFiles = new List<string> { "Text Files", "Image Files", "Audio Files", "Video Files", "Application Files", "Other Files" };

        public int Compare(string x, string y)
        {
            int xi = OrderedFiles.IndexOf(x);
            int yi = OrderedFiles.IndexOf(y);

            if (xi > yi)
                return 1;

            if (xi < yi)
                return -1;

            return 0;
        }
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

按自定义顺序对字符串数组进行排序 的相关文章

  • 自动从 C# 代码进行调试过程并读取寄存器值

    我正在寻找一种方法来读取某个地址的 edx 注册表 就像这个问题中所问的那样 读取eax寄存器 https stackoverflow com questions 16490906 read eax register 虽然我的解决方案需要用
  • Func 方法参数的首选命名约定是什么?

    我承认这个问题是主观的 但我对社区的观点感兴趣 我有一个缓存类 它采用类型的缓存加载器函数Func
  • 为什么禁止在 constexpr 函数中使用 goto?

    C 14 对你能做什么和不能做什么有规则constexpr功能 其中一些 没有asm 没有静态变量 看起来相当合理 但标准也不允许goto in constexpr功能 即使它允许其他控制流机制 这种区别背后的原因是什么 我以为我们已经过去
  • 跨多个控件共享事件处理程序

    在我用 C 编写的 Windows 窗体应用程序中 我有一堆按钮 当用户的鼠标悬停在按钮上时 我希望按钮的边框发生变化 目前我有以下多个实例 每个按钮一个副本 private void btnStopServer MouseEnter ob
  • 如何在 WPF RichTextBox 中跟踪 TextPointer?

    我正在尝试了解 WPF RichTextBox 中的 TextPointer 类 我希望能够跟踪它们 以便我可以将信息与文本中的区域相关联 我目前正在使用一个非常简单的示例来尝试弄清楚发生了什么 在 PreviewKeyDown 事件中 我
  • 如何针对 Nancy 中的 Active Directory 进行身份验证?

    这是一篇过时的文章 但是http msdn microsoft com en us library ff650308 aspx paght000026 step3 http msdn microsoft com en us library
  • c 中的错误:声明隐藏了全局范围内的变量

    当我尝试编译以下代码时 我收到此错误消息 错误 声明隐藏了全局范围内的变量 无效迭代器 节点 根 我不明白我到底在哪里隐藏或隐藏了之前声明的全局变量 我怎样才能解决这个问题 typedef node typedef struct node
  • C# 用数组封送结构体

    假设我有一个类似于 public struct MyStruct public float a 我想用一些自定义数组大小实例化一个这样的结构 在本例中假设为 2 然后我将其封送到字节数组中 MyStruct s new MyStruct s
  • 为什么模板不能位于外部“C”块内?

    这是一个后续问题一个答案 https stackoverflow com questions 4866433 is it possible to typedef a pointer to extern c function type wit
  • 如何在 Team Foundation 上强制发表有意义的签入评论?

    我有一个开发团队有一个坏习惯 他们写道poor签入评论 当我们必须在团队基础上查看文件的历史记录时 这使得它成为一场噩梦 我已经启用了变更集评论政策 这样他们甚至可以在签到时留下评论 否则他们不会 我们就团队的工作质量进行了一些讨论 他们很
  • 线程、进程和 Application.Exit()

    我的应用程序由主消息循环 GUI 和线程 Task Factory 组成 在线程中我调用一些第三方应用程序var p new Process 但是当我调用Application Exit 在消息循环中 我可以看到在线程中启动的进程仍在内存中
  • 像“1$”这样的位置参数如何与 printf() 一起使用?

    By man I find printf d width num and printf 2 1 d width num 是等价的 但在我看来 第二种风格应该与以下相同 printf d num width 然而通过测试似乎man是对的 为什
  • C 中的位移位

    如果与有符号整数对应的位模式右移 则 1 vacant bit will be filled by the sign bit 2 vacant bit will be filled by 0 3 The outcome is impleme
  • AccessViolationException 未处理

    我正在尝试使用史蒂夫 桑德森的博客文章 http blog stevensanderson com 2010 01 28 editing a variable length list aspnet mvc 2 style 为了在我的 ASP
  • 检查 url 是否指向文件或页面

    我们需要以下内容 如果文件确实是文件 则从 URL 下载该文件 否则 如果它是一个页面 则什么也不做 举个简单的例子 我有以下命令来下载文件 My Computer Network DownloadFile http www wired c
  • 什么是 C 语言的高效工作流程? - Makefile + bash脚本

    我正在开发我的第一个项目 该项目将跨越多个 C 文件 对于我的前几个练习程序 我只是在中编写了我的代码main c并使用编译gcc main c o main 当我学习时 这对我有用 现在 我正在独自开展一个更大的项目 我想继续自己进行编译
  • 如何在内存中存储分子?

    我想将分子存储在内存中 这些可以是简单的分子 Methane CH4 C H bond length 108 7 pm H H angle 109 degrees But also more complex molecules like p
  • 在Linux中使用C/C++获取机器序列号和CPU ID

    在Linux系统中如何获取机器序列号和CPU ID 示例代码受到高度赞赏 Here http lxr linux no linux v2 6 39 arch x86 include asm processor h L173Linux 内核似
  • 更改显示的 DPI 缩放大小使 Qt 应用程序的字体大小渲染得更大

    我使用 Qt 创建了一些 GUI 应用程序 我的 GUI 应用程序包含按钮和单选按钮等控件 当我运行应用程序时 按钮内的按钮和字体看起来正常 当我将显示器的 DPI 缩放大小从 100 更改为 150 或 200 时 无论分辨率如何 控件的
  • 如何连接字符串和常量字符?

    我需要将 hello world 放入c中 我怎样才能做到这一点 string a hello const char b world const char C string a hello const char b world a b co

随机推荐

  • 使用 ruby​​gem 访问 Shopify API 时出现 SSL_connect 错误

    我在使用 shopify api gem 访问 Shopify API 时遇到问题 发生的情况如下 gt gt require shopify api gt false gt gt ShopifyAPI Base site https us
  • 有什么方法可以替换 Swift String 上的字符吗?

    我正在寻找一种方法来替换 Swift 中的字符String 示例 这是我的字符串 我想用 替换 以获得 This is my string 我怎样才能实现这个目标 这个答案已经针对 Swift 4 和 5 进行了更新 如果您仍在使用 Swi
  • 在 shell 脚本中的 grep 模式中使用文字 (*)

    我正在尝试评估grepshell 脚本内的表达式 并且 grep 使用字面星号 但该星号似乎被我的 bash 扩展 而不是保留字面星号 branch description git branch list vv grep 我能做什么来跑步g
  • 检测 标签无法加载视频

    我试图捕获以下嵌入标签的错误 在 iPad iOS 上 我尝试用以下方法捕获它 movie1 on onerror function alert error 我也尝试过onabort onstalled onended and onsusp
  • 如何使用 jQuery 或 Javascript 对角滚动

    是否有利用 javascript 或 jQuery 进行对角滚动的项目或插件 例如当您向下滚动内容时 它会被拉到浏览器的左上角 当您向上滚动时 您的内容将被拉到角落的右下角 我看到一些类似的项目 网站 他们在滚动时为元素设置动画 大多数使用
  • 以编程方式检索 Android API 版本

    有没有办法获取手机当前运行的API版本 如 Android 文档中所述 手机运行的 SDK 级别 整数 可用于 android os Build VERSION SDK INT 这个int对应的类在android os Build VERS
  • 如何从 Dask-Yarn 作业中捕获工人的日志?

    我尝试过使用以下内容 config dask distributed yaml and config dask yarn yaml logging file config path to config ini or logging vers
  • 使用 Axios 下载图像并将其转换为 base64

    我需要从远程服务器下载 jpg 图像并将其转换为 base64 格式 我使用 axios 作为我的 HTTP 客户端 我尝试向服务器发出 git 请求并检查response data但它似乎不是那样工作的 链接到 axios https g
  • HttpHandler 和 XML 文件

    我想拦截向服务器发出的任何 XML 文件请求 我认为使用 HttpHandler 可能可以实现 它已编码并且可以工作 仅在本地主机上 那么 为什么它只能在本地主机上运行 这是我的 web config
  • 有什么简单的方法可以解释为什么我不能执行 List Animals = new ArrayList() 吗? [复制]

    这个问题在这里已经有答案了 我知道为什么人们不应该这样做 但有没有办法向外行解释为什么这是不可能的 您可以轻松地向外行人解释这一点 Animal animal new Dog 狗是一种动物 但狗的列表并不是动物的列表 假设您创建了一个列表D
  • 在 msvc 中引用临时文件

    为什么它可以在 MS Visual C 上编译 struct myClass void func myClass arg void main func myClass works even though func only takes my
  • 如何检查模块是否已导入?

    如何检查我是否在代码中的某个位置导入了模块 if not has imported somemodule print you have not imported somemodule 我想检查是否已经导入了模块的原因是因为我有一个不想导入的
  • 使 Tkinter 窗口显示在任务栏中

    我希望我的程序显示在任务栏中 但仍然没有传统的 Windows 边框 我该怎么办 我知道self overrideredirect 1 但是这会将我的程序从任务栏中删除 这是针对 Windows 7 的 我并不认为这是 正确 的方法 但看看
  • 获取连接到 C# .NET WebAPI 应用程序的客户端的 IP 地址

    我试过 private const string HttpContext MS HttpContext private const string RemoteEndpointMessage System ServiceModel Chann
  • zend 与 select 的关系

    我是 zend 的新手 我被要求重新开发一个曾经用纯 PHP 编写的网站并将其放入 zend 框架中 我在数据库关系方面遇到很多麻烦 我似乎无法专心定义和查询关系 我想找一个类别 从该类别中 我希望能够找到与其关联的所有类别信息 并能够查询
  • 是否可以使用Python的requests库设置代理链?

    标准情况如下 公司的安全策略要求所有员工使用公司的代理服务器 需要授权 来获取任何 https 资源 为了通过 Python 解释器成功使用任何互联网连接 我必须手动 set HTTP PROXY http
  • 价格 woocommerce 中的小数分隔符

    Hi everyone I have this configuration in my woocommerce And in my product I have this 但当我显示价格时 它返回 4 95 而不是 4 95 我用这个来获取
  • 在 Hibernate 中混合 HQL 和 Criteria API

    是否可以混合使用 HQL 和 Criteria API 我有一个String包含 HQL 中的 where 条件和Criteria它已经建成并从其他地方获得 我想知道是否可以添加where条件String to Criteria add w
  • 使用 Spring CloudVault 时应用程序初始化时出现禁止错误

    使用 Spring Cloud HOXTON SR6 和 Spring boot 2 3 2 启动服务时 尝试访问 secret application 和 secret application profile 时出现 403 错误 这些路
  • 按自定义顺序对字符串数组进行排序

    我想按照我提到的顺序对字符串数组中的一组固定字符串进行排序 例如 文本文件 图像文件 音频文件 视频文件 应用程序文件 其他文件 示例1 如果我的字符串数组输入是这样的 inputval 0 Other files inputval 1 I