String.Split(),空字符串和删除指定字符的方法
String.Split(), empty strings and method deleting specified characters
我的目标是制作一个非常简单的程序,它将删除指定的字符,从而合并一些字符串。你可以看到下面的代码。定界符是:空格、\n 和 \t。真正困扰我的是,当 Split() 方法在字符串的开头和结尾看到定界符时,它会给出 String.Empty ,或者如果它两次看到定界符,它也会给出 String.Empty() (对于例如两个连续的空格)。我确信这是一个很好的理由,我不太明白但让我困扰的是下面的程序如何在 RemoveSpecifiedCharacters 方法的帮助下正确地忽略(看起来它“删除”了它们但实际上它只是忽略了它们)这个空字符串(尤其是两个 \t\t)就像空格一样,将子字符串数组中的所有字符串完全连接成一个名为 s2 的新字符串?如果您使用 foreach 循环,那么您将在 substrings 数组的元素中看到空字符串。
internal class Program
{
// Below is the method that will delete all whitespaces and unite the string broken into substrings.
public static string RemoveSpecifiedChars (string input, char [] delimiters)
{
string[] substrings = input.Split(delimiters);
string output = string.Empty;
foreach (string substring in substrings)
{
output = string.Concat(output, substring);
}
return output;
}
static void Main(string[] args)
{
string s1 = " this is a\nstring! And \t\t this is not. ";
Console.WriteLine("This is how string looks before: " + s);
char[] delimiters = { ' ', '\n', '\t' };
string s2 = removeWhitespaces(s, delimiters);
Console.WriteLine("\nThis is how string looks after: " + s1);
Console.WriteLine("\nPress any key to terminate the program. ");
Console.Read();
}
}
这是输出:
This is how string looks before: this is a
string! And this is not.
This is how string looks after: thisisastring!Andthisisnot.
请不要误会我的意思。有很多解释,我阅读了官方文件,但对于我上面展示的方法,它仍然对我没有任何解释。
预先感谢任何答案!
string.Split()
方法:
" ".Split();
将导致包含 2 个 string.Empty
项的数组,因为 space 字符的两边没有任何内容(空)。
" something".Split();
和 "something ".Split();
将产生一个包含两项的数组,其中一项是空字符串,实际上 space 字符的一侧是空的。
"a b".Split(); //double space in between
第一个space左边是a
,右边是一个空字符串(右边是空的,因为后面还有一个分隔符),第二个space,左侧为空字符串,右侧为 b
。所以结果将是:
{"a","","","b"}
我的目标是制作一个非常简单的程序,它将删除指定的字符,从而合并一些字符串。你可以看到下面的代码。定界符是:空格、\n 和 \t。真正困扰我的是,当 Split() 方法在字符串的开头和结尾看到定界符时,它会给出 String.Empty ,或者如果它两次看到定界符,它也会给出 String.Empty() (对于例如两个连续的空格)。我确信这是一个很好的理由,我不太明白但让我困扰的是下面的程序如何在 RemoveSpecifiedCharacters 方法的帮助下正确地忽略(看起来它“删除”了它们但实际上它只是忽略了它们)这个空字符串(尤其是两个 \t\t)就像空格一样,将子字符串数组中的所有字符串完全连接成一个名为 s2 的新字符串?如果您使用 foreach 循环,那么您将在 substrings 数组的元素中看到空字符串。
internal class Program
{
// Below is the method that will delete all whitespaces and unite the string broken into substrings.
public static string RemoveSpecifiedChars (string input, char [] delimiters)
{
string[] substrings = input.Split(delimiters);
string output = string.Empty;
foreach (string substring in substrings)
{
output = string.Concat(output, substring);
}
return output;
}
static void Main(string[] args)
{
string s1 = " this is a\nstring! And \t\t this is not. ";
Console.WriteLine("This is how string looks before: " + s);
char[] delimiters = { ' ', '\n', '\t' };
string s2 = removeWhitespaces(s, delimiters);
Console.WriteLine("\nThis is how string looks after: " + s1);
Console.WriteLine("\nPress any key to terminate the program. ");
Console.Read();
}
}
这是输出:
This is how string looks before: this is a
string! And this is not.
This is how string looks after: thisisastring!Andthisisnot.
请不要误会我的意思。有很多解释,我阅读了官方文件,但对于我上面展示的方法,它仍然对我没有任何解释。 预先感谢任何答案!
string.Split()
方法:
" ".Split();
将导致包含 2 个 string.Empty
项的数组,因为 space 字符的两边没有任何内容(空)。
" something".Split();
和 "something ".Split();
将产生一个包含两项的数组,其中一项是空字符串,实际上 space 字符的一侧是空的。
"a b".Split(); //double space in between
第一个space左边是a
,右边是一个空字符串(右边是空的,因为后面还有一个分隔符),第二个space,左侧为空字符串,右侧为 b
。所以结果将是:
{"a","","","b"}