我希望在可变数量的字符之后拆分名为: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。
答案 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 "
答案 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();
}