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会返回一个字符串数组而不是字符串。