我需要用 (' ') 或 (''') 分割一个字符串,但如果字符串中出现 ' ' 我只想保留那个空格。这是字符串的示例:
1 7871.6 LIQ WCT GOR THP ' ' FIELD BHP /
1 7871.6 'LIQ' 'WCT' 'GOR' 'THP' ' ' FIELD BHP /
我希望输出是:
1
7871.6
LIQ
WCT
GOR
THP
FIELD
BHP
/
任何帮助将不胜感激
答案 0 :(得分:1)
这样的事情应该可以让他完成工作......也就是说,如果你不介意你的头从正则表达式中爆炸...... p.s这应该涵盖你奇怪的额外情况:) 哦,所以我确保我归功于正确的人我从 https://stackoverflow.com/a/51432792/5963888
获得了正则表达式var str = "1 7871.6 'LIQ' 'WCT' 'GOR' \"THP\" ' ' 'LIQ WCT GOR' FIELD BHP /";
var regex = new System.Text.RegularExpressions.Regex("([\"'])((?:\\\\1|(?:(?!\\1)).)*)(\\1)");
var match = regex.Matches(str)
.Select(e => e.Groups)
.Select( e => e[2].Value)
.SelectMany( e =>
{
if(!(e.Trim() == String.Empty))
{
return e.Split();
}
return new[] { e };
});
System.Console.WriteLine(String.Join(Environment.NewLine, match));
答案 1 :(得分:0)
这是一些可以解决问题的代码
string str = "1 7871.6 'LIQ' 'WCT' 'GOR' 'THP' ' ' FIELD BHP /";
string replaceToken = "someValueThatYouChose";
str = str.Replace(" ' ' ", $" {replaceToken} ");
str = str.Replace("'", "");
string[] splitValues = str.Split(" ");
for (int i = 0; i < splitValues.Length; i++)
{
if(splitValues[i] == replaceToken){
splitValues[i] = " ";
}
}
// Here is your output
foreach (var value in splitValues)
{
Console.WriteLine(value);
}