是这样的,有个问题请教下各位,C#怎么将字符串str1里小括号内的 and 去除而不影响括号外的,还有个问题,如何将括号内的只保留一个C,其他不影响, 想得到这样的结果str2=“A NE 'B and (C NE 'D' ) and E NE 'F' ”,ABCD这些都是不固定的字符串。
str1=“A NE 'B and (C NE 'D' and C NE 'D' and C NE 'D') and E NE 'F' ”,感谢!
...全文
80422打赏收藏
新人求助,忘指点,急急急
是这样的,有个问题请教下各位,C#怎么将字符串str1里小括号内的 and 去除而不影响括号外的,还有个问题,如何将括号内的只保留一个C,其他不影响, 想得到这样的结果str2=“A NE 'B and (C NE 'D' ) and E NE 'F' ”,ABCD这些都是不固定的字符串。 str1=“A NE 'B and (C NE 'D' and C NE 'D' and C NE 'D') and E NE 'F' ”,感谢!
const string childAnd = "and";
const string myString = "A NE 'B and (C NE 'D' and C NE 'D' and C NE 'D') and E NE 'F' ";
// 取子字符串
var i = myString.IndexOf('(');
var j = myString.IndexOf(')');
var childStr = myString.Substring(i, j - i + 1);
// 去重
var andIndex = childStr.IndexOf(childAnd);
var newString = childStr.Remove(andIndex, j - i - andIndex);
// 替换
var ret = myString.Replace(childStr, ne[/align]wString);
1、括号里去and:
string str="A NE 'B and (C NE 'D' and C NE 'D' and C NE 'D') and E NE 'F'";
string str2=Regex.Replace(str, "(?<=\\(.*)\\s[aA][nN][dD]\\s(?=.*\\))", " ");
2、括号里去重:
string str0="C NE D C NE F C NE G";
string str1=string.Empty;
str0.Split(' ').Distinct().ToList().ForEach(s => str1+=" "+s);
谢谢mirror030你的意见,我确实说的比较乱,你的理解是对的。就是字符串外面有类似and这样的连接词,然后括号里的字符串有好几块,格式比较类似,如:A NE B and A NE C 。。。每块直接也用and这样的连接词,和括号外是一致的,但第一主语都是A,我的问题主要包含两个,一个是怎么只去除括号内的and 连接词,外面不受影响; 二是 对括号里的字符串的块去重,保留不重复的,如果可以期望能给完整的实例代码,我是新手哈,理解起来比较慢,谢谢!
重要的是字符串的规则,你讲的越清楚,越能得到解决办法
从给出的示例来看.规则就是 按字母顺序 A NE 'B' 是一个单元 ,如果有多个,放括号中重复.并且作为一个单元.单元之间使用 and 连起
要求是去除重复的单元,类似于去重问题,括号中的重复去掉保存一个,但是括号要保留
str1=“A NE 'B' and (C NE 'D' and C NE 'D' and C NE 'D') and E NE 'F' ”
所以需要更清楚的规则说明
wskicfuu大哥,你给的
“Regex.Replace("a and b and c (a and b and c) and d and e","(?<=\\([\\w\\s]+\\s+)and?(?=\\s+[\\w\\s]+\\))","an")
将括号内的and替换成an ”
的确可以将括号里的and全部替换,还想请问下,怎么只对括号里的字符串去重呢,而不影响整个字符串?
Regex.Replace("a and b (a and b a and b a and b) a and b","(?<=[\\(\\s]+)a and b?(?=[\\s\\)])","#")
将括号内的所有a and b替换成#,然后再自己把###替换成a and b吧
你给的输入字符串太模糊了
// 好奇怪的需求
str1=“A NE 'B and (C NE 'D' and C NE 'D' and C NE 'D') and E NE 'F' ”
list = str1.split('and')
newlist
foreach(item in list)
{
newitem=item;
if(item.trim().startwidth('('))
newitem=item.trim('(',')').split('and')[0];
newlist.add(newitem)
}
string.join(' and ',newlist.toarray())