首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在C#中拆分不带分隔符的字符串

在C#中拆分不带分隔符的字符串
EN

Stack Overflow用户
提问于 2019-02-27 04:09:41
回答 5查看 986关注 0票数 2

首先,祝大家美好的一天。

请原谅我糟糕的英语。

我有一个问题,我想做我自己的第一个程序,这个程序应该有以下任务:

例如,您可以使用以下Hashsum:

9f73c507603e62c48926eb37f0f19f46

程序应将其转换为:

"9","c","8","e","d","1","5","d","0","b","e","b","e","5","c","1","2","6","f","2","3","3","9","5","b","f","8","0","4","8","d","8“

我不会在没有自己寻找和尝试的情况下问这个问题,但请记住,我还是一个初学者,我的“解决方案”是这样的:

代码语言:javascript
复制
namespace Hash_Checker
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Enter Your Hashsum.");
            string myhash = Console.ReadLine();
            string[] words = myhash.Split(' ');
            Console.WriteLine("Modified Hashsum:");
            foreach (var word in words)
            {

                System.Console.Write($"\"{word}\", ");
            }
            Console.ReadKey();
        }
    }
}

忽略可能不好的形式,我稍后会试着写得更好。

我的两个问题是:

您必须像这样输入Hashsum:

9 f 7 3 c 5 0 7 6 0 3 e 6 2 c 4 8 9 2 6 e b 3 7 f 0 f 1 9 f 4 6

使用分隔符,但我希望您可以在没有分隔符的情况下输入它,如下所示:

9f73c507603e62c48926eb37f0f19f46

但是当你这样做的时候,它会在下面的输出中结束:

"9f73c507603e62c48926eb37f0f19f46",

第二个问题:

我的程序在最后一个数字后加了一个“,”,但我不想这样。

示例:

应该是:

"9","c","8","e","d","1","5","d","0","b","e","b","e","5","c","1","2","6","f","2","3","3","9","5","b","f","8","0","4","8","d","8“

但事实是:

"9","c","8","e","d","1","5","d","0","b","e","b","e","5","c","1","2","6","f","2","3","3","9","5","b","f","8","0","4","8","d","8",

最后,应该删除。

有没有人能给我一个建议或解决方案?或者对于初学者来说有点难?

感谢大家的帮助!

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2019-02-27 04:21:12

实现这一点的一个(许多)方法是从输入中读取字符串,选择字符串中的每个字符,并使用LINQ将其引起来,然后使用string.Join()将每个字符串连接起来,如下所示:

代码语言:javascript
复制
namespace Hash_Checker
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Enter Your Hashsum.");
            var input = Console.ReadLine();

            //select each character from the string and turn 
            //each into a string that looks like "<character here>"
            var characters = input.Select(x => string.Format("\"{0}\"", x));

            //place comma in between each string containing "<character here>"
            var formattedString = string.Join(",", characters);

            System.Console.Write(formattedString);
            Console.ReadKey();
        }
    }
}
票数 3
EN

Stack Overflow用户

发布于 2019-02-27 04:14:46

我可以向您介绍string所具有的ToCharArray方法。这已经给了你正在寻找的东西,除了它是所有的char而不是string。如果你希望数组是string类型的,你可以很容易地做一个Linq .Select(s => s.ToString())

所以:

代码语言:javascript
复制
var str = "12345";
var charArr = str.ToCharArray();
var strArr = charArr.Select(s => s.ToString()).ToArray();
票数 0
EN

Stack Overflow用户

发布于 2019-02-27 04:17:18

只需对代码进行最小程度的更改:

代码语言:javascript
复制
class Program
{
  static void Main(string[] args)
  {
    Console.WriteLine("Enter Your Hashsum.");
    string myhash = Console.ReadLine();
    var words = myhash.ToCharArray().Select(c => $"{c}");
    Console.WriteLine("Modified Hashsum:");
    foreach (var word in words)
    {
      System.Console.Write($"\"{word}\",");
    }

    Console.ReadKey();
  }
}

ToCharArray()为每个字符提供一个char[]Select(c => $"{c}")是将字符转换为字符串的最短方法。

我将变量类型从string[]更改为var。实际上,该类型现在是一个IEnumerable<string>,它同样适用于您的循环。

代码语言:javascript
复制
class Program
{
  static void Main(string[] args)
  {
    Console.WriteLine("Enter Your Hashsum.");
    var words = Console.ReadLine().ToCharArray().Select(c => $"{c}");
    Console.WriteLine("Modified Hashsum:");
    Console.Write("\"" + words.Aggregate((c, n) => $"{c}\",\"{n}") + "\"");
    Console.ReadKey();
  }
}

这样还可以去掉最后一个字符后面的尾随,

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54893327

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档