C# 从C语言中的单词中删除前缀和后缀#

C# 从C语言中的单词中删除前缀和后缀#,c#,c#-4.0,C#,C# 4.0,我有一个单词字符串,我想从每个单词中删除一些后缀和前缀(位于数组中),然后将词干单词存储回字符串中。请问有什么建议吗?提前谢谢 后缀和前缀的总数超过100个,用什么来表示它们更好?阵列?正则表达式?请问有什么建议吗 public static string RemoveFromEnd(this string str, string toRemove) { if (str.EndsWith(toRemove)) return str.Substring(0, str.Length - to

我有一个单词字符串,我想从每个单词中删除一些后缀和前缀(位于数组中),然后将词干单词存储回字符串中。请问有什么建议吗?提前谢谢

后缀和前缀的总数超过100个,用什么来表示它们更好?阵列?正则表达式?请问有什么建议吗

public static string RemoveFromEnd(this string str, string toRemove)
{
if (str.EndsWith(toRemove))
    return str.Substring(0, str.Length - toRemove.Length);
else
    return str;
}
这可以和后缀一起使用,前缀呢?是否有一种同时处理后缀和前缀的快速方法?我的绳子太长了

  • 将字符串拆分为一个stings数组,每个条目就是每个单词。为此,请使用
    yourString.Split(',')
    。使用分隔单词的字符代替
    ,“
    ,它可能是一个spcae
  • 使用foreach检查您的单词是否有前缀或前缀 sufixes,要做到这一点,您可以使用
    yourWord.StartsWith(“yourPrefix”)
    yourWord.EndsWith(“yourPrefix”)
  • 使用yourWord删除前缀/后缀。替换或 你的字。子串。如果出现以下情况,请小心不要删除前缀/sufixx 它在单词的中间!<李>
    如果你不能从字典里查到什么词是真正的词,那么像“premium”这样的词很难不被误认为是前缀。从理论上讲,你可以创建某种规则来检查“mium”是否是英语单词,但它永远不会完整,需要大量的工作。

    有(除其他方法外)TrimStart、TrimEnd和stripstores, 那会对你有用的

    //'Removes the start part of the string, if it is matchs, otherwise leave string unchanged
        //NOTE:case-sensitive, if want case-incensitive, change ToLower both parameters before call
        public static string TrimStart(this string str, string sStartValue)
        {
            if (str.StartsWith(sStartValue))
            {
                str = str.Remove(0, sStartValue.Length);
            }
            return str;
        }
        //        'Removes the end part of the string, if it is matchs, otherwise leave string unchanged
        public static string TrimEnd(this string str, string sEndValue)
        {
            if (str.EndsWith(sEndValue))
            {
                str = str.Remove(str.Length - sEndValue.Length, sEndValue.Length);
            }
            return str;
        }
    //        'StripBrackets checks that starts from sStart and ends with sEnd (case sensitive).
    //        'If yes, than removes sStart and sEnd.
    //        'Otherwise returns full string unchanges
    //        'See also MidBetween
            public static string StripBrackets(this string str, string sStart, string sEnd)
            {
                if (StringHelper.CheckBrackets(str, sStart, sEnd))
                {
                    str = str.Substring(sStart.Length, (str.Length - sStart.Length) - sEnd.Length);
                }
                return str;
            }
    

    到目前为止你试过什么?你能展示一些你想要的输入和输出的例子吗?你有初始代码吗。StackOverflow旨在与现有工作协作,而不是推荐。以后缀和前缀开头或结尾但不是后缀或前缀的单词如何。他们只是那句话的一部分?如何处理这个问题?@jonemani mmhh。。。你如何区分前缀/后缀的单词和非前缀/后缀的单词?您是否有某种字典/有效的\u word\u容器变量?@jonemani如果您的字典中只有没有前缀/后缀的单词,那么您应该检查步骤1中的单词是否未包含在字典中,这意味着它们是有前缀/后缀的。@然后,它会有前缀或后缀?@jonemanni也许你需要重新检查这个新词(去掉前缀/后缀后)是否属于你的“有效单词”词典。只需执行
    您的dictionary.Contains(您的StrippedWord)
    即可。是的,如果我正确理解你的问题,你就可以满足你的需要了。但是我有很多后缀和前缀。我可以把它们放在一个数组中或者使用正则表达式吗?如果可以,代码可以是什么?请更新您的问题以更好地描述您的要求。对不起,我不清楚。您可以将前缀/后缀保留在两个列表或数组中,并对其进行类似的处理,例如,我的函数FindFirstPatternContainedString