Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/EmptyTag/142.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
String 如何在asp.net中使用C#拆分字符串而不指定任何分隔符?_String_C# 4.0 - Fatal编程技术网

String 如何在asp.net中使用C#拆分字符串而不指定任何分隔符?

String 如何在asp.net中使用C#拆分字符串而不指定任何分隔符?,string,c#-4.0,String,C# 4.0,我有一根1000长的绳子。我需要拆分它并将其分配给不同的控件。我没有任何字符分隔符。 因为我分配给控件的每个字符串都不包含相同的长度。到现在为止,我正在使用子字符串来指定长度。但由于长度太长,我越来越紧张 请告诉我是否有更简单的拆分和分配方法?您可以使用以下方法: 或使用: 你也可以这样做 var parts = new [] { Tuple.Create(0, 100), Tuple.Create(100, 20), Tuple.Create(120, 50),

我有一根1000长的绳子。我需要拆分它并将其分配给不同的控件。我没有任何字符分隔符。
因为我分配给控件的每个字符串都不包含相同的长度。到现在为止,我正在使用子字符串来指定长度。但由于长度太长,我越来越紧张

请告诉我是否有更简单的拆分和分配方法?

您可以使用以下方法:

或使用:

你也可以这样做

var parts = new [] 
{
     Tuple.Create(0, 100),
     Tuple.Create(100, 20),
     Tuple.Create(120, 50),
}

var inputParts = parts.Select(p => input.Substring(p.Item1, p.Item2))
                      .ToArray();
control1.Value = inputParts[0];
control2.Value = inputParts[1];
control3.Value = inputParts[3];
随着控件数量的增加,这使得维护变得更加容易。您可以静态地存储此“部件”列表,这样就可以在应用程序中的其他位置重用它,而无需重复代码

如果所有控件的类型相同,则可以执行以下操作:

 var parts = new [] 
 {
     new { control = control1, offset = 0, length = 100 },
     new { control = control2, offset = 100, length = 20 },
     new { control = control3, offset = 120, length = 50 },
 }

 foreach(var part in parts)
 {
     part.control.Value = new string(inputChars, part.offset, offset.length);
     // or part.control.Value = input.Substring(part.offset, offset.length);
 }
您可以使用以下选项:

或使用:

你也可以这样做

var parts = new [] 
{
     Tuple.Create(0, 100),
     Tuple.Create(100, 20),
     Tuple.Create(120, 50),
}

var inputParts = parts.Select(p => input.Substring(p.Item1, p.Item2))
                      .ToArray();
control1.Value = inputParts[0];
control2.Value = inputParts[1];
control3.Value = inputParts[3];
随着控件数量的增加,这使得维护变得更加容易。您可以静态地存储此“部件”列表,这样就可以在应用程序中的其他位置重用它,而无需重复代码

如果所有控件的类型相同,则可以执行以下操作:

 var parts = new [] 
 {
     new { control = control1, offset = 0, length = 100 },
     new { control = control2, offset = 100, length = 20 },
     new { control = control3, offset = 120, length = 50 },
 }

 foreach(var part in parts)
 {
     part.control.Value = new string(inputChars, part.offset, offset.length);
     // or part.control.Value = input.Substring(part.offset, offset.length);
 }

您无法绕开指定哪个控件获取字符串的哪个部分的信息。一旦您有了这些信息(假设它们存储在控件数组
controls
和int数组
length
),您就可以在字符串上循环并执行分段
子字符串

var controls = { control1, control2, control3, ... };
var lengths = { 100, 20, 5, ... };

int offset = 0;
for (int i = 0; i < controls.length; i++) {
    controls[i].Value = myLongString.Substring(offset, lengths[i]);
    offset += lengths[i];
}
var-controls={control1,control2,control3,…};
变量长度={100,20,5,…};
整数偏移=0;
for(int i=0;i

显然,如果
myLongString
短于所有
长度之和,或者
length
的数组长度短于
控件的数组长度,那么这将非常失败,但添加一些检查并抛出适当的错误将留给读者作为练习。此外,控件必须兼容,因为它们都派生自具有公共
属性的相同基类。如果不是这样,您可能需要在循环中执行一些类型检查和强制转换。

您无法绕过指定哪个控件获取字符串的哪个部分的信息。一旦您有了这些信息(假设它们存储在控件数组
controls
和int数组
length
),您就可以在字符串上循环并执行分段
子字符串

var controls = { control1, control2, control3, ... };
var lengths = { 100, 20, 5, ... };

int offset = 0;
for (int i = 0; i < controls.length; i++) {
    controls[i].Value = myLongString.Substring(offset, lengths[i]);
    offset += lengths[i];
}
var-controls={control1,control2,control3,…};
变量长度={100,20,5,…};
整数偏移=0;
for(int i=0;i


显然,如果
myLongString
短于所有
长度之和,或者
length
的数组长度短于
控件的数组长度,那么这将非常失败,但添加一些检查并抛出适当的错误将留给读者作为练习。此外,控件必须兼容,因为它们都派生自具有公共
属性的相同基类。如果不是这样,您可能需要在循环中执行一些类型检查和强制转换。

因此没有分隔符,每个子字符串的长度也不同?因此,为了了解每个控件都有一个字符串和一个长度数组?我不确定是否理解正确,但是如果你有一个长度为1000的字符串,没有任何分隔符,那么在没有至少一个模式的情况下是不可能拆分它的。你能给我们看一下你的字符串吗?是的。没有分隔符,每个子字符串的长度不同。假设我有一个长度为50的字符串,前5个字符需要分配给一个控件,另6个字符,或者任何其他数字需要分配给另一个控件。等等。就像@Gabriel说的,如果没有分隔符或模式,那么不手动拆分字符串是不可能的。为什么不将字符串的一部分作为示例发布?因此没有分隔符,每个子字符串的长度都不同?因此,为了理解,每个控件都有一个字符串和一个长度数组?我不确定我是否理解正确,但是如果你有一个长度为1000的字符串,没有任何分隔符,那么在没有至少一个模式的情况下是不可能拆分它的。你能给我们看一下你的字符串吗?是的。没有分隔符,每个子字符串的长度不同。假设我有一个长度为50的字符串,前5个字符需要分配给一个控件,另6个字符,或者任何其他数字需要分配给另一个控件。等等。就像@Gabriel说的,如果没有分隔符或模式,那么不手动拆分字符串是不可能的。为什么不发布字符串的一部分作为示例呢?但这也可以使用子字符串来完成。对于这么大的字符串,我想避免手工操作。@Jyothi-True。请参阅我的更新答案,以获得更易于管理的解决方案。是否仍然存在??由于上述任何一项都不能避免手工操作。@Jyothi由于每个字符串的长度不同,您必须指定每个子字符串的长度以及要将每个字符串分配到某个位置的控件。存储它们的方式和位置很重要,这取决于您的特殊需要,这就是为什么我尝试列出几个选项的原因。但这也可以使用子字符串来完成。对于这么大的字符串,我想避免手工操作。@Jyothi-True。请参阅我的更新答案,以获得更易于管理的解决方案。是否仍然存在??由于上述任何一项都不能避免手工操作。@Jyothi由于每个字符串的长度不同,您必须指定每个子字符串的长度以及要将每个字符串分配到某个位置的控件。如何以及在何处存储它们很重要,这取决于您的特殊需求,这就是我尝试列出它们的原因