[英]Trying to put tokens from a file into a string array excluding blank spaces
我正在嘗試拆分文件中的所有字符串,並將它們放入數組中,並排除所有空白行和制表符,但是在打印時,數組中仍存在空白條目。 空白點是換行的地方,但我認為它們會被刪除,而我的aa數組中的字符將被刪除。
string line;
List<string> tokenList = new List<string>();
char[] aa = new char[] {' ', '\t', '\r', '\n'};
do {
line = sr.ReadLine();
foreach(var test in line.Split(aa)) {
if(test != null) {
//System.Console.WriteLine(test);
tokenList.Add(test);
}
}
} while(sr.EndOfStream != true);
foreach(var toke in tokenList) {
System.Console.WriteLine(toke);
}
我正在閱讀的示例文件:
DECLARE
my_char CHAR;
my_vchar VARCHAR2 ( 6 ) :='JOHN';
my_bool BOOLEAN := NULL ;
total SMALLINT(5);
BEGIN
DBMS_OUTPUT.PUT_LINE ( total) ;
mychar :=' ';
total &total;
DBMS_OUTPUT.PUT ( my_vchar) ;
DBMS_OUTPUT.PUT ( mychar) ;
DBMS_OUTPUT.PUT ( total)
DBMS_OUTPUT.NEW_LINE ;
ENDl \
采用
line.Split(new string[] { " ", "\t", Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries);
代替
line.Split(' ', '\t', '\r', '\n');
您正在拆分回車符和換行符。 在基於Windows的計算機中,這兩個字節一起在一行的末尾使用。
我認為這是您要尋找的:
string line;
List<string> tokenList = new List<string>();
char[] aa = new char[] { ' ', '\t', '\r', '\n' };
do
{
line = sr.ReadLine();
if (!string.IsNullOrEmpty(line) && !string.IsNullOrWhiteSpace(line))
{
foreach (var test in line.Split(aa, StringSplitOptions.RemoveEmptyEntries))
{
if (test != null)
{
//System.Console.WriteLine(test);
tokenList.Add(test);
}
}
}
} while (sr.EndOfStream != true);
foreach (var toke in tokenList)
{
System.Console.WriteLine(toke);
}
1)添加了以下內容以確保您不嘗試處理空行:
if (!string.IsNullOrEmpty(line) && !string.IsNullOrWhiteSpace(line))
2)將您的foreach .split
更改為:
foreach (var test in line.Split(aa, StringSplitOptions.RemoveEmptyEntries))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.