在可变数量的字符后拆分字符串

时间:2013-06-06 13:32:16

标签: c# .net

我希望在可变数量的字符之后拆分名为:invoerstring的字符串(n是字符串需要拆分时的字符数)。  如果字符串长度比变量n短,则需要添加空格直到字符串长度= n。结果需要在名为uitvoer的文本域中显示。

到目前为止:

string invoerstring = invoer.Text;

if (invoerstring.Length < n)
{
    invoerstring += "";
    char[] myStrChars = invoerstring.ToCharArray();
}

if (invoerstring.Length == n)
{
    string [] blok = invoerstring.Split();
    foreach (string word in blok)
    {
        uitvoer.Text = word;
    }
}

编辑: 上面给出的解决方案并不能完全为我完成工作,也许在我发布练习时会有所帮助:

  

|| crypt n m d text ||文本用空格填充,直到其长度为止   n ||的倍数文本中的字符是循环移位的   字母表由位移d ||组成例如:如果d = 1,那么'a' - &gt; 'b',   'b' - &gt; 'c'....等...'z' - &gt; 'a'||文本分为块   长度为n个字符||在每个块的n个字符里面   循环移位m次到左边||转移的群体是   级联

我已经解决了m和d只需解决n。


上面给出的解决方案并不能完全为我完成这项工作,也许在我发布练习时会有所帮助:

||密码和文本 ||文本用空格填充,直到其长度是n的倍数 ||文本中的字符通过位移d在字母表中循环移位 ||例如:如果d = 1,那么'a' - &gt; 'b','b' - &gt; 'c'....等...'z' - &gt; '一个' ||文本分为长度为n个字符的块 ||在n的每个块内,字符向左移动m次 ||转移的群体是连接的

我已经解决了m和d只需解决n。

3 个答案:

答案 0 :(得分:4)

这是您想要的代码,无需通过字符数组:

public static string EnsureExactLength(this string s, int length)
{
    if (s == null)
        throw new ArgumentNullException("null");

    return s.PadRight(length).Substring(0, length);
}

你这样称呼它:

string s = "Test string".EnsureExactLength(4); // will return "Test"
string s = "Te".EnsureExactLength(4);          // will return "Te  "

您可以找到示例LINQPad计划here

答案 1 :(得分:1)

好吧,老实说,我不确定你上面的代码是做什么的,因为我看到Split()这样的调用没有任何参数和东西。但为了满足要求,这一行应该做到:

string invoerstring = invoer.Text.PadRight(n, ' ').Substring(0, n);

PadRight只要n 就会确定Substring会将string的部分返回到n {1}}。

如果你想在数组中使用该字符串,因为我发现你最后有一个字符串,你可以这样做:

invoerstring.ToArray();

答案 2 :(得分:0)

这是一个LinqPad脚本:

void Main()
{
    const string TEXT = "12345ABCDE12345ABCDE1234";
    const int LENGTH = 5;
    const char PAD = '#';

    Enumerable.Range(0, TEXT.Length / LENGTH)
        .Union(TEXT.Length < LENGTH ? new int[] { 1 } : new int[] {})
        .Select((index, item) => TEXT.Length < LENGTH 
                                    ? TEXT.PadRight(LENGTH, PAD)
                                    : TEXT.Substring(index * LENGTH, LENGTH))
        .Concat(TEXT.Length % LENGTH != 0 
                    ? new string[] { TEXT.Substring(TEXT.Length - (TEXT.Length % LENGTH)).PadRight(LENGTH, PAD) }
                    : new string[] { })                                 
        .Dump();

}