6

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

后缀和前缀的总数超过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;
}

这可以与后缀一起使用,那么前缀呢?有没有一种同时处理后缀和前缀的快速方法?我的绳子太长了。

4

3 回答 3

14

我的 StringHelper 类有(除其他外)方法 TrimStart、TrimEnd 和 StripBrackets,它们对你很有用

//'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;
        }
于 2012-05-07T12:03:10.647 回答
0

如果您无法从字典中检查哪些单词实际上是单词,那么像“premium”之类的单词将很难不误认为是前缀。从理论上讲,您可以创建某种规则来检查“mium”是否是英文单词,但它永远不会完整并且需要大量工作。

于 2012-05-07T11:31:36.593 回答
0
  1. 将您的字符串拆分为一个字符串数组,每个条目都是每个单词。为此,您使用yourString.Split(','). 使用分隔你的单词的字符而不是',',它可能是一个 spcae' '
  2. 使用 foreach 检查您的单词是否有任何前缀或后缀,这样做您使用yourWord.StartsWith("yourPrefix")yourWord.EndsWith("yourPrefix")
  3. 使用 yourWord.Replace 或 yourWord.SubString 删除前缀/后缀。如果前缀/后缀位于单词的中间,请注意不要删除它!
于 2012-05-07T11:07:49.013 回答