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

Posted

技术标签:

【中文标题】如何检查单词是不是以给定字符开头?【英文标题】:How to check if a word starts with a given character?如何检查单词是否以给定字符开头? 【发布时间】:2013-03-09 18:06:08 【问题描述】:

我有一个 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;

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

【问题讨论】:

我可能不明白你的问题,但如果你能把它解析成一个字符串,你可以使用.StartsWith 【参考方案1】:

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

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

【讨论】:

【参考方案2】:

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

if(item.Title.StartsWith("A"))

    //do whatever

冲洗并重复

【讨论】:

【参考方案3】:

要检查一个值,请使用:

    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
    

AND 作为奖励,如果你想知道你的字符串以什么开头,从一个列表中,并基于该值做一些事情:

    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.
        
    

【讨论】:

为已经可以很容易写成new []'a', 'b', 'c'.Contains(s[0])的东西写一个扩展方法是不是有点矫枉过正 我更喜欢“StartsWithAny”的可读性,但这也取决于预期的重用量。 谢谢!这 - 带有out 参数的扩展方法正是我想为我的需要编写的,即根据路由 url 段列表检查传入的路由段。像魅力一样工作! @Magnus 这并不过分。正如 OP 所说,StartsWithAny 更具可读性,并且可以在许多地方重复使用。【参考方案4】:

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

比如找一个数字、字母、单词等,非常有表​​现力和灵活性。

他们有一个非常棒的教程here:

这种表达方式的一个例子是:

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

无论如何,这都会找到所有以“a”开头的项目。你会发现甚至可以利用 Lambda 和 Linq 来让它们更好地流动。

希望对您有所帮助。

【讨论】:

【参考方案5】:

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

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

【讨论】:

【参考方案6】:

你可以做这样的事情来检查一个特定的字符。

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

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

【讨论】:

【参考方案7】:

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

word = "AWord"
if (word[0] == 'A')

    // do something

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

【讨论】:

以上是关于如何检查单词是不是以给定字符开头?的主要内容,如果未能解决你的问题,请参考以下文章

检查字符串是不是在字符串开头包含单词[重复]

如何检查类名中是不是存在单词?

如何使用正则表达式匹配不以某些字符开头或结尾的单词?

如何计算以字符串开头的单词数

如何在以特定单词开头并以另一个单词结尾的字符串中出现多次[重复]

Laravel 搜索列以给定单词开头