c#如何判断一个字符串是否包含非指定的字符串数组的字符?

如:string[] str = new string[] { "11", "22", "33" };
另一个字符串:string s1="11332211122333",则s1是完全是由str数组中的字符组成的,尽管部分内容被重复了,即s1不包含str之外的字符,返回false;
还有一个字符串:string s2="aa11223",则s2 包含str之外的字符.true.

请高手及前辈帮忙.

好像有点点麻烦的。我有一个思路你看看怎么样

创建一个与s1同长度的布尔数组,先设置为true。

然后从str中取一个到s1中使用index进行匹配(注意会有多次匹配的,所以要使用start参数),如果有则知道匹配是从什么地方开始到什么地方结束。然后在布尔数组中的相同地方设置为false

然后从str中取第二个字符串进行相同操作直到所有字符串比较完成。

最后检查布尔数组中的值是不是还剩有true,如果有的话就返回false,如果没有true了,则返回true。
温馨提示:内容为网友见解,仅供参考
第1个回答  2013-01-21
public bool test1(string[] table, string str)
{
string pattern = "^[";
for (int i = 0; i < table.Length; i++)
{
pattern += table[i] + "|";
}
pattern = pattern.Substring(0, pattern.Length - 1) + "]";

Regex r = new Regex(pattern);

Match m = r.Match(str);
if (m.Success)
{
//不包含其他字符
return false;
}
else
{
//包含其他字符
return true;
}
}
调用:
string[] str = new string[] { "11", "22", "33" };
string s1 = "11332211122333";
if(test1(str,s1))
{
//"含有其他字符";
}
else
{
//"不含有其他字符";
}

string s2 = "aa11223";
if (test1(str, s2))
{
//"含有其他字符";
}
else
{
//"不含有其他字符";
}
别忘了命名空间:using System.Text.RegularExpressions;
第2个回答  2013-01-17
public static bool test()
{
bool flag = true;
string s;
string[] str = new string[] { "11", "22", "33" };
s = String.Join("", str);
string s1 = "11332211122333";
foreach (char ch in s1)
{
if (s.IndexOf(ch) < 0) //包含数组以为的字符
{
flag=true;
break;
}
else
{
flag = false; //说明都是由里面的值组成的
}
}
return flag;
}
测试通过!追问

如果 s1="123",这个明显就不是str中的数组拼成的,即包含了str数组之外的内容,但你的程序做不到.

追答

你现在的是意思是直接由"11","22","33"这三个数组组成的这种类似的?如果是这样的话,就不用循环了,直接s1.IndexOf("数组里面的元素"),判断条件还是一样的,

第3个回答  2013-01-16
像这样需要去比较内容的,用equals方法去比较,例如if(s1.equals(str)){return true}这样去判断
第4个回答  2013-01-16
问题描述的不是很清楚啊,看不明白

c#如何判断一个字符串是否包含非指定的字符串数组的字符?
然后从str中取一个到s1中使用index进行匹配(注意会有多次匹配的,所以要使用start参数),如果有则知道匹配是从什么地方开始到什么地方结束。然后在布尔数组中的相同地方设置为false 然后从str中取第二个字符串进行相同操作直到所有字符串比较完成。最后检查布尔数组中的值是不是还剩有true,如果有的话就...

[已解决] C# 如何判断一个字符串是否在一个字符串数组中?
bool b=字符串数组.Contains(字符串)

c# 如何判断字符串包含除了字母,数字,下划线以外的字符,不用正则_百 ...
一种是 定义一个数组里面包含了你所有需要验证的不允许存在的字符,然后逐个验证 另一种是 将字符串转成数组,和一中提到的数组取交集 string str = "146art_";IEnumerable<char> listss2 = new List<char>() { '1', 't', '_' };var itemsssss = str.ToArray().Intersect(listss2).To...

C#中如何判断字符串数组中某元素是否包含字母或者数字
最笨的方法就是循环判断每个字符,比如判断是否包含字母就是:该字符是否 >="a" && ="A"<="Z"

C#判断是否含有某个值
>=0){ MessageBox.Show("包含"+str);}如果是判断一个基本类型的集合(列表,数组),如字符串数组string[],整形列表List<int>,也可以用上述两个方法判断。另外,字符串中查找,如果是开头或结尾,可以用StartWith或者EndWith方法代替Contains 如果是自己设计的复杂类的对象,以上方法不适用 ...

C# 如何判定一个字符串是否在一个字符数组中
用一个循环遍历下不就可以了,要不就是用现成的类库方法具体看MSDN吧用循环是字符串数组arraystr ,str-字符串for(int i = 0 ; i<arraystr.length ;i++ ){ if(str.equals(arraystr[i]) ) \/\/用值判断 break}

c#中的字符串查找函数
1、首先,自定义一个函数,实现是否子串的判断。2、自定义函数中,定义一个字符数组,保存得到的子串。3、如果子串为空,则输出整个字符串c。4、用while语句循环判断字符串的每个字符,条件为首字符存在。5、逐一判断每个字符,如果字符都相等,说明存在子串,输出得到的子串。6、如果以字符串的某字符...

C#如何判断字符串中是否包含某个字符
using System;using System.Collections;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace ConsoleApp1 { class Program { static void Main(string[] args){ string a = "abc平行线";Console.WriteLine(a.Contains("平行线"));} } } ...

C# 如何判断数组中不包含 某个元素
string str="dir";string[] ia = {a dir c,a dir d,a b c};int id = Array.IndexOf(ia,str);if(id==-1){\/\/不存在}string[] strArr = {"a","b","c","d","e"};bool exists = ((IList)strArr).Contains(str);if(exists) \/\/ 存在else\/\/ 不存在 ...

C# 如何判定一个字符串是否在一个字符数组中
string[] t={"as","aa","sa"};string mod="sa";for(i=0;i<t.Length;i++)if(t[i]==mod)break;if(i<t.Length)\/\/存在的代码 else \/\/不存在的代码

相似回答