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

どの単語が実際に単語であるかを辞書で確認できない場合、「プレミアム」などの単語を接頭辞と間違えないようにするのは非常に困難です。理論的には、「mium」が英語の単語であるかどうかをチェックするために使用されるある種のルールを作成できますが、それは決して完全ではなく、多くの作業が必要になります。

于 2012-05-07T11:31:36.593 に答える
0
  1. 文字列を文字列の配列に分割し、各エントリを各単語にします。これを行うには、 を使用しますyourString.Split(',')。の代わりに単語を区切る文字を使用してください','' '
  2. yourWord.StartsWith("yourPrefix")foreach を使用し て、単語に接頭辞または接尾辞が含まれているかどうかを確認します。yourWord.EndsWith("yourPrefix")
  3. yourWord.Replace または yourWord.SubString を使用してプレフィックス/サフィックスを削除します。単語の途中にある場合は、接頭辞/接尾辞x を削除しないように注意してください。
于 2012-05-07T11:07:49.013 に答える