如何检查单词是否以给定字符开头?

问题描述 投票:0回答:8

我有一个 Sharepoint 项目列表:每个项目都有标题、描述和类型。 我成功找回了它,我称它为

result
。我想首先检查
result
中是否有任何项目以 A 开头,然后是 B,然后是 C,等等。我必须对每个字母字符执行相同的操作,然后如果我找到以该字符开头的单词,我将得到以粗体显示字符。

我最初使用此功能显示字符:

private string generateHeaderScripts(char currentChar)
{
    string headerScriptHtml = "$(document).ready(function() {" +
        "$(\"#myTable" + currentChar.ToString() + "\") " +
        ".tablesorter({widthFixed: true, widgets: ['zebra']})" +
        ".tablesorterPager({container: $(\"#pager" + currentChar.ToString() +"\")}); " +
        "});";
    return headerScriptHtml;
}

如何检查单词是否以给定字符开头?

c# sharepoint web-parts
8个回答
47
投票

要检查一个值,请使用:

    string word = "Aword";
    if (word.StartsWith("A")) 
    {
        // do something
    }

您可以制作一个小扩展方法来传递包含 A、B 和 C 的列表

    public static bool StartsWithAny(this string source, IEnumerable<string> strings)
    {
        foreach (var valueToCheck in strings)
        {
            if (source.StartsWith(valueToCheck))
            {
                return true;
            }
        }

        return false;
    }

    if (word.StartsWithAny(new List<string>() { "A", "B", "C" })) 
    {
        // do something
    }

并且作为奖励,如果您想从列表中知道字符串以什么开头,并根据该值执行某些操作:

    public static bool StartsWithAny(this string source, IEnumerable<string> strings, out string startsWithValue)
    {
        startsWithValue = null;

        foreach (var valueToCheck in strings)
        {
            if (source.StartsWith(valueToCheck))
            {
                startsWithValue = valueToCheck;
                return true;
            }
        }

        return false;
    }

用途:

    string word = "AWord";
    string startsWithValue;
    if (word.StartsWithAny(new List<string>() { "a", "b", "c" }, out startsWithValue))
    {
        switch (startsWithValue)
        {
            case "A":
                // Do Something
                break;

            // etc.
        }
    }

2
投票

您可以执行类似的操作来检查特定字符。

public bool StartsWith(string value, string currentChar) {
   return value.StartsWith(currentChar, true, null);
}

StartsWith 方法有一个忽略大小写的选项。第三个参数是设置文化。如果为空,则仅使用当前区域性。使用此方法,您可以循环遍历单词,运行检查并处理单词以根据需要突出显示第一个字符。


1
投票

假设您要检查的属性是字符串类型,您可以使用 String.StartsWith() 方法..例如:-

if(item.Title.StartsWith("A"))
{
    //do whatever
}

冲洗并重复


1
投票

请尝试以下操作。您可以执行 StartsWith 或 Substring 0,1(第一个字母)

    if (Word.Substring(0,1) == "A") {
    }

1
投票

您可以简单地检查第一个字符:

string word = "AWord"
if (word[0] == 'A')
{
    // do something
}

请记住,字符比较比字符串比较更高效


0
投票

要返回字符串中的第一个字符,请使用:

Word.Substring(0,1) //where word is a string

0
投票

您可以实现正则表达式。它们非常强大,但是当您设计表达式时,它实际上会为您完成任务。

比如找数字、字母、单词等,表现力很强,也很灵活。

他们有一个非常棒的教程这里

此类表达式的一个示例是:

string input = "Some additional string to compare against.";
Match match = Regex.Match(input, @"\ba\w*\b", RegexOptions.IgnoreCase);

无论大小写,都会找到所有以“a”开头的项目。您甚至会发现利用 Lambda 和 Linq 可以让它们变得更好。

希望有帮助。


0
投票

要扩展上面接受的答案,您可以将 StartsWithAny 扩展方法设置为 oneliner:

public static bool StartsWithAny(this string source, IEnumerable<string> values)
{
    return values.Any(source.StartsWith);
}
© www.soinside.com 2019 - 2024. All rights reserved.