如何将八个字符串拆分为四个变量?

Sam*_*tar 1 c#

我有一个像这样的字符串:

var id = "01020304";
Run Code Online (Sandbox Code Playgroud)

有没有一种简单的方法可以将它分成四个变量,称为pr,pa,fo,它每个变量都需要有两个字符串.寻找一个优雅的解决方案,如果它存在.

Ode*_*ded 6

你可以使用Substring:

pr = id.Substring(0, 2);
pa = id.Substring(2, 2);
fo = id.Substring(4, 2);
it = id.Substring(6, 2);
Run Code Online (Sandbox Code Playgroud)


das*_*ght 5

由于你有四个不同的变量,你不能比使用Substring更优雅:

var pr = id.Substring(0, 2);
var pa = id.Substring(2, 2);
var fo = id.Substring(4, 2);
var it = id.Substring(6);
Run Code Online (Sandbox Code Playgroud)

如果你正在寻找一个包含四个2字符子串的数组,你可能会变得更加漂亮:

var parts = new string[4];
for (int i = 0 ; i != parts.Length ; i ++) {
    parts[i] = id.Substring(2*i, 2);
}
Run Code Online (Sandbox Code Playgroud)

编辑:使用LINQ表达式可以完成相同的操作:

var parts = Enumerable
    .Range(0, id.Length/2)
    .Select(i => x.Substring(2*i, 2))
    .ToArray();
Run Code Online (Sandbox Code Playgroud)

  • @Oded你可能是对的.但是,如果你不能不加思索地编写这个构造LINQ,我敢打赌它太过花哨而不能保持可读性:) (2认同)

ada*_*ost 5

尝试正则表达式.

 var id = "01020304";
 string pat = "(?:(\\d{2}))";

 var result = Regex.Split(id, pat).Where(p=>p!=string.Empty);
 foreach (var t in result)
 {
   Console.WriteLine(t);
 }
Run Code Online (Sandbox Code Playgroud)