C# RichTextBox 逐行扫描
C# RichTextBox Line-by-line scan
嘿,我正在创建自己的编码语言,我已经设置了整个应用程序,包括保存、打开、关闭、新建等。
为了使 "Run" 部分正常工作,我需要一种方法来扫描和测试 richTextBox1 中的每一行。
也许对于过去的 Java 用户来说,一些类似于 "java-util-scanner," 的东西,但更容易用于测试每一行。
有谁知道这样做的方法,其中字符串 "scannedString" 将被这样测试:
if(scannedString == "#load(moduleFiles)") {
//action here
}
string scannedStringNextLine = ???
if(scannedStringNextLine = "") {
//action here
}
最终看起来会更像这样:
if(scannedString == "code1" || scannedString == "code2" etc... ) {
if(scannedString == "code1") {
//action here
}
} else {
//error message
}
希望这是足够的信息...
要获取 RichTextBox
的代码行,您可以用换行符号拆分内容:
var lines = this.richTextBox.Text.Split('\n').ToList();
线条按出现顺序排列。然后你可以在 for 或 foreach 循环中遍历行:
foreach (var line in lines)
{
// access a line, evaluate it, etc.
}
一种方法是在换行符上拆分文本,然后为您关心的文本解析每一行:
private void btnScan_Click(object sender, EventArgs e)
{
var code = richTextBox1.Text;
foreach (var line in code.Split(new []{'\n','\r'},
StringSplitOptions.RemoveEmptyEntries))
{
CheckForLoad(line);
}
}
void CheckForLoad(string line)
{
if (string.IsNullOrWhiteSpace(line)) return;
int i = line.IndexOf("#load");
if (i < 0) return;
int openParen = line.IndexOf("(", i + 1);
if (openParen < 0) return;
int closeParen = line.IndexOf(")", openParen + 1);
if (closeParen < 0) return;
string modules = line.Substring(openParen + 1, closeParen - openParen - 1);
MessageBox.Show(string.Format("Loading modules: {0}", modules));
}
嘿,我正在创建自己的编码语言,我已经设置了整个应用程序,包括保存、打开、关闭、新建等。
为了使 "Run" 部分正常工作,我需要一种方法来扫描和测试 richTextBox1 中的每一行。
也许对于过去的 Java 用户来说,一些类似于 "java-util-scanner," 的东西,但更容易用于测试每一行。
有谁知道这样做的方法,其中字符串 "scannedString" 将被这样测试:
if(scannedString == "#load(moduleFiles)") {
//action here
}
string scannedStringNextLine = ???
if(scannedStringNextLine = "") {
//action here
}
最终看起来会更像这样:
if(scannedString == "code1" || scannedString == "code2" etc... ) {
if(scannedString == "code1") {
//action here
}
} else {
//error message
}
希望这是足够的信息...
要获取 RichTextBox
的代码行,您可以用换行符号拆分内容:
var lines = this.richTextBox.Text.Split('\n').ToList();
线条按出现顺序排列。然后你可以在 for 或 foreach 循环中遍历行:
foreach (var line in lines)
{
// access a line, evaluate it, etc.
}
一种方法是在换行符上拆分文本,然后为您关心的文本解析每一行:
private void btnScan_Click(object sender, EventArgs e)
{
var code = richTextBox1.Text;
foreach (var line in code.Split(new []{'\n','\r'},
StringSplitOptions.RemoveEmptyEntries))
{
CheckForLoad(line);
}
}
void CheckForLoad(string line)
{
if (string.IsNullOrWhiteSpace(line)) return;
int i = line.IndexOf("#load");
if (i < 0) return;
int openParen = line.IndexOf("(", i + 1);
if (openParen < 0) return;
int closeParen = line.IndexOf(")", openParen + 1);
if (closeParen < 0) return;
string modules = line.Substring(openParen + 1, closeParen - openParen - 1);
MessageBox.Show(string.Format("Loading modules: {0}", modules));
}