我有一个字符串和一个数组,我想检查字符串,并查找该字符串是否包含数组中的任何字符串.
我的数组最多包含10个元素.
string[] stringArray = { "apple", "banana", "orange" };
string text="I want an apple";
public static string getItem(string text)
{
//check text for stringArray items
//return item (apple, banana, orange)
}
string item = getItem(text);
Run Code Online (Sandbox Code Playgroud)
所以我正在寻找的是创建一个从中返回项目的方法.另外我想知道是否有任何替代方法可以使用Enum或List <>来完成此操作.
最后我做了这样的方法
public static string getItem(string text)
{
string[] stringArray = { "Apple", "Banana", "Orange" };
string item = stringArray.Where(s => text.ToUpper().Contains(s)).DefaultIfEmpty("None").FirstOrDefault();;
return item;
}
Run Code Online (Sandbox Code Playgroud) 我一直在阅读关于Knuth-Morris-Pratt算法的维基百科文章,我对如何在跳转/部分匹配表中找到值感到困惑.
i | 0 1 2 3 4 5 6
W[i] | A B C D A B D
T[i] | -1 0 0 0 0 1 2
Run Code Online (Sandbox Code Playgroud)
如果有人可以更清楚地解释因为句子的快捷方式规则
"让我们说我们发现了一个正确的后缀,它是一个正确的前缀,结束于W [2],长度为2(最大可能)
令人困惑.如果正确的后缀在W [2]结束,它的大小不是3吗?
另外我想知道为什么T [4]在没有大小为1的前缀和后缀时不是1:A.
感谢您提供的任何帮助.
我有一个简单的正则表达式模式来验证名称.但是当我运行它时,我会得到非法的字符范围错误.我想通过转义"\ s"它会允许一个空间,但编译器仍在抱怨.
public boolean verifyName(String name) {
String namePattern = "^[\\p{L}]++(?:[',-\\s][\\p{L}]++)*+\\.?$";
return name.matches(namePattern);
}
Run Code Online (Sandbox Code Playgroud)
这是我认为不应该发生的错误,因为名称可能包含这些错误 [',-\\s]
那我在哪里不明白?
我需要这个字符串:
var x = 'Hi ${name}! How are you? ${name}, you are old! ${name} share with ${other} how do u ${feel}!'
Run Code Online (Sandbox Code Playgroud)
我需要知道使用正则表达式存在多少不同的$ {ANY_THING}.在上面的示例中,我预计3:$ {name},$ {other},$ {feel}
我正在尝试:
x.match(\${([a-zA-Z]))
Run Code Online (Sandbox Code Playgroud)
但输出是错误的:(
谢谢!
我有一个如下的数据集 -
> a_i
[1] "Our-Facebook-Page/td-p/3175990"
[2] "Our-Facebook-Page/td-p/3175990/page/2"
....
[17] "Data-duplicate-files/td-p/4743405"
[18] "Data-duplicate-files/td-p/4743405/page/2"
[19] "Subscription-Release-1-sucks/td-p/4556739"
[20] "Subscription-Release-1-sucks/td-p/4556739/page/2"
> b_i
[1] "Data-duplicate-files/td-p/4743405"
[2] "Subscription-Release-1-sucks/td-p/4556739"
[3] "Quick-fix/td-p/4556740"
Run Code Online (Sandbox Code Playgroud)
我的目标是找到仅存在于b_i中的7位数字(例如4743405,4556739,4556740),并从包含相应数字的a_i中获取数据.所以最终输出将是这样的 -
[1] "Data-duplicate-files/td-p/4743405"
[2] "Data-duplicate-files/td-p/4743405/page/2"
[3] "Subscription-Release-1-sucks/td-p/4556739"
[4] "Subscription-Release-1-sucks/td-p/4556739/page/2""
Run Code Online (Sandbox Code Playgroud)
我能够使用strsplit(b_i,"/")获取数字但我仍然在抓取包含匹配数字的列表.是否有任何优雅的方式来映射这些数字并获取列表?
我有一个问题,当字符串混合阿拉伯语和英语字符,迫使我在那之间添加\t或\u0009但这会产生另一个问题,因为当文本出现给客户时,很多空格"因为标签"出现在单词之间外观不可接受,任何想法如何解决这个问题?
最近开始使用erlang并遇到上面的问题,你如何在一个守卫声明中比较两个字符串?试过字符串:等于(x,y)的方法,但无法让它在一个守卫内部工作.
我想$columns[2]根据一小组字符串检查数组中的元素.我现在的方式是;
if ( $columns[2] eq 'string1'
|| $columns[2] eq 'string2'
|| $columns[2] eq 'string3'
|| ...) {
...
}
Run Code Online (Sandbox Code Playgroud)
似乎必须有比所有OR更好的方法.
我手头有一个相当简单的任务:给定一个(小写的)big字符串和一个(小写的)字符串数组,small如果所有small字符串都在字符串中,我需要产生1 big,否则为0.所以这样做的pythonic方法就是:
>>> big = 'the quick brown fox jumps over the lazy dog'
>>> smallTrue = ["quick","dog","fox"]
>>> smallFalse = ["quick","fox","wolf"]
>>> int(all([s in big for s in smallTrue]))
1
>>> int(all([s in big for s in smallFalse]))
0
Run Code Online (Sandbox Code Playgroud)
问题在于是否有一种不同的方法可以使得0和1更好地扩展到更长的bigs(显然更长)(想想"典型"科学论文的摘要)加上大量small更长的数组?
缩放意味着处理时间,因为我的机器有很多RAM.因此,如果我需要以某种方式预处理数据,这将需要更多的RAM,这将是好的.
问的原因是因为我遇到了一些类似字符串操作任务的可伸缩性问题.
谁能告诉我我的代码有什么问题?基本上,我只需要添加从唯一码字words1到uniques列表中,以后我比较这两个words1和words2.在if声明中,如果我删除!然后它找到匹配的单词(与我需要的相反)
List<string> Unique(string lines1 ,string lines2, char[] separators)
{
string[] words1 = lines1.Split(separators, StringSplitOptions.RemoveEmptyEntries);
string[] words2 = lines2.Split(separators, StringSplitOptions.RemoveEmptyEntries);
List<string> uniques = new List<string>();
for (int i = 0; i < words1.Length; i++)
{
bool match;
for (int x = 0; x < words2.Length; x++)
{
if (!words1[i].Equals(words2[x]))
{
match = true;
uniques.Add(words1[i]);
break;
}
else
{
match = false;
}
}
}
return uniques;
}
Run Code Online (Sandbox Code Playgroud)