C# 如果行仅包含特定的分隔符,如何将字符串按特定的字符拆分

C# 如果行仅包含特定的分隔符,如何将字符串按特定的字符拆分,c#,text,split,C#,Text,Split,我将从文本文件到变量的所有行都设置为实数,如下所示: var text = File.ReadAllLines(pathToFile); ALTER TABLE ORC ADD MercadoInt VARCHAR2(1) ADD Coef_KrMo NUMBER(20,10) ADD Coef_KrMt NUMBER(20,10) ADD Coef_KrEq NUMBER(20,10) ADD Co

我将从文本文件到变量的所有行都设置为实数,如下所示:

var text = File.ReadAllLines(pathToFile);
ALTER TABLE ORC
        ADD MercadoInt  VARCHAR2(1)
        ADD Coef_KrMo   NUMBER(20,10)
        ADD Coef_KrMt   NUMBER(20,10)
        ADD Coef_KrEq   NUMBER(20,10)
        ADD Coef_KrSb   NUMBER(20,10)
        ADD Coef_KrGb   NUMBER(20,10)
        ADD Coef_MDEmp  NUMBER(20,10)
        ADD Coef_MDLoc  NUMBER(20,10)
        ADD Abrv_MDLoc  VARCHAR2(10)
        ADD Dsc_MDLoc   VARCHAR2(50)
        ADD Arred_MDLoc VARCHAR2(1)
        ADD Arred_NDecs NUMBER(1)

UPDATE Orc set MercadoInt='N', Coef_KrMo=1, Coef_KrMt=1, Coef_KrEq=1, Coef_KrSb=1, Coef_KrGb=1, Coef_MDEmp=1, Coef_MDLoc=1, Abrv_MDLoc='', Dsc_MDLoc='', Arred_MDLoc='N', Arred_NDecs=0 WHERE MercadoInt IS NULL
我现在需要用这个分隔符“/”来分割文本。 但是该文本可以在任何地方包含“/”,因为它是用SQL语句填充的,所以我只需要在“/”在该行中“单独”时拆分,这样我就不会意外拆分命令

我想我应该用正则表达式?我对他们不在行吗? 有没有办法调节
text.Split()
以满足我的需要

这是文件:

ALTER TABLE ORC
    ADD MercadoInt  VARCHAR2(1)
    ADD Coef_KrMo   NUMBER(20,10)
    ADD Coef_KrMt   NUMBER(20,10)
    ADD Coef_KrEq   NUMBER(20,10)
    ADD Coef_KrSb   NUMBER(20,10)
    ADD Coef_KrGb   NUMBER(20,10)
    ADD Coef_MDEmp  NUMBER(20,10)
    ADD Coef_MDLoc  NUMBER(20,10)
    ADD Abrv_MDLoc  VARCHAR2(10)
    ADD Dsc_MDLoc   VARCHAR2(50)
    ADD Arred_MDLoc VARCHAR2(1)
    ADD Arred_NDecs NUMBER(1)
/
UPDATE Orc set MercadoInt='N', Coef_KrMo=1, Coef_KrMt=1, Coef_KrEq=1, Coef_KrSb=1, Coef_KrGb=1, Coef_MDEmp=1, Coef_MDLoc=1, Abrv_MDLoc='', Dsc_MDLoc='', Arred_MDLoc='N', Arred_NDecs=0 WHERE MercadoInt IS NULL
/
输出应为仅包含以下命令的列表:

var text = File.ReadAllLines(pathToFile);
ALTER TABLE ORC
        ADD MercadoInt  VARCHAR2(1)
        ADD Coef_KrMo   NUMBER(20,10)
        ADD Coef_KrMt   NUMBER(20,10)
        ADD Coef_KrEq   NUMBER(20,10)
        ADD Coef_KrSb   NUMBER(20,10)
        ADD Coef_KrGb   NUMBER(20,10)
        ADD Coef_MDEmp  NUMBER(20,10)
        ADD Coef_MDLoc  NUMBER(20,10)
        ADD Abrv_MDLoc  VARCHAR2(10)
        ADD Dsc_MDLoc   VARCHAR2(50)
        ADD Arred_MDLoc VARCHAR2(1)
        ADD Arred_NDecs NUMBER(1)

UPDATE Orc set MercadoInt='N', Coef_KrMo=1, Coef_KrMt=1, Coef_KrEq=1, Coef_KrSb=1, Coef_KrGb=1, Coef_MDEmp=1, Coef_MDLoc=1, Abrv_MDLoc='', Dsc_MDLoc='', Arred_MDLoc='N', Arred_NDecs=0 WHERE MercadoInt IS NULL
注:

当我说拆分时,行只包含“/”是因为如果语句包含“/”它也会拆分它,这是不可能发生的,所以我只能在行只包含“/”时拆分它。

也许使用正则表达式有更好的解决方案,但下面的方法也应该可以

foreach (String line in text){
    if (line.Count(f => f == '/') == 1){
        String[] myArray = line.Split('/')
    }
}

如果改用
File.ReadAllText(pathToFile)
,则可以执行以下操作:

var result = text.Split(new[]{"\n/"}, StringSplitOptions.RemoveEmptyEntries);

这将产生一个包含文件中两个命令的列表。

显示其中的一些行以及至少其中一行的所需结果不清楚仅当“/”为“你的内存中只有一行。如果一行仅包含分隔符,您希望拆分什么?请查看
Regex.split()
,其中您可以单独定义一个模式/sql命令包含的内容
/
?@Steve查看更新的Answer并举例说明RealAllText和ReallAllLines之间的差异为何?它会给我相同的输出,对吗?不,
ReallAllLines
会给你一个字符串数组,
reallalltext
会给你一个字符串形式的完整文件。但是如果我做了string text=file.ReadAllLines(),它只会返回一个字符串。@likeifyoucaredboutmyname会返回一个字符串数组而不是字符串。