我正在阅读一个大文件 X12 并解析其中的信息。我有两个似乎无法解决的瓶颈功能。read_line() 和 get_element() 有什么办法可以让这两个函数更快?get_element 函数的主要瓶颈似乎是 Substring 方法。
public String get_element(int element_number) {
int count = 0;
int start_index = 0;
int end_index = 0;
int current_index = 0;
while (count < element_number && current_index != -1) {
current_index = line_text.IndexOf(x12_reader.element_delimiter, start_index);
start_index = current_index + 1;
count++;
}
if (current_index != -1) {
end_index = line_text.IndexOf(x12_reader.element_delimiter, start_index);
if (end_index == -1) end_index = line_text.Length;
return line_text.Substring(start_index, end_index - start_index);
} else {
return "";
}
}
private String read_line() {
string_builder.Clear();
int n;
while ((n = stream_reader.Read()) != -1) {
if (n == line_terminator) return string_builder.ToString();
string_builder.Append((char)n);
}
return string_builder.ToString();
}
我正在读取 x12 数据。这是它的外观示例。http://examples.x12.org/005010X221/dollars-and-data-sent-together/