分享一个.NET(C#)按指定字母个数截断英文字符串的方法–提供枚举选项,可保留完整单词
2018-01-16 22:16 狼人:-) 阅读(560) 评论(0) 编辑 收藏 举报分享一个.NET(C#)按字母个数截断英文字符串的方法,该方法提供枚举选项。枚举选项包括:可保留完整单词,允许最后一个单词超过最大长度限制,字符串最后跟省略号以及不采取任何操作等,具体示例实现代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 | using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace StringTruncateDemo { class Program { static void Main( string [] args) { Console.WriteLine( "字符串截断测试..." ); var input = "ASP.NET is an open source server-side Web application framework designed for Web development to produce dynamic Web pages. It was developed by Microsoft to allow programmers to build dynamic web sites, web applications and web services." ; var output = TruncateString(input, 12, TruncateOptions.FinishWord | TruncateOptions.IncludeEllipsis | TruncateOptions.AllowLastWordToGoOverMaxLength); Console.WriteLine( "截断后的字符串为:{0}" , output); Console.WriteLine( "字符串截断测试已结束,请按任意键退出..." ); Console.ReadKey(); } #region 截断字符串,提供枚举选项,可保留完整单词 /// <summary> /// 截断字符串,提供枚举选项,可保留完整单词 /// </summary> /// <param name="valueToTruncate">需处理的字符串</param> /// <param name="maxLength">字符数</param> /// <param name="options">截断选项</param> /// <returns></returns> public static string TruncateString( string valueToTruncate, int maxLength, TruncateOptions options) { if (valueToTruncate == null ) { return "" ; } if (valueToTruncate.Length <= maxLength) { return valueToTruncate; } var includeEllipsis = (options & TruncateOptions.IncludeEllipsis) == TruncateOptions.IncludeEllipsis; var finishWord = (options & TruncateOptions.FinishWord) == TruncateOptions.FinishWord; var allowLastWordOverflow = (options & TruncateOptions.AllowLastWordToGoOverMaxLength) == TruncateOptions.AllowLastWordToGoOverMaxLength; var retValue = valueToTruncate; if (includeEllipsis) { maxLength -= 1; } int lastSpaceIndex = retValue.LastIndexOf( " " , maxLength, StringComparison.CurrentCultureIgnoreCase); if (!finishWord) { retValue = retValue.Remove(maxLength); } else if (allowLastWordOverflow) { int spaceIndex = retValue.IndexOf( " " , maxLength, StringComparison.CurrentCultureIgnoreCase); if (spaceIndex != -1) { retValue = retValue.Remove(spaceIndex); } } else if (lastSpaceIndex > -1) { retValue = retValue.Remove(lastSpaceIndex); } if (includeEllipsis && retValue.Length < valueToTruncate.Length) { retValue += "..." ; } return retValue; } #endregion #region /// <summary> /// 截断字符串用的枚举 /// </summary> [Flags] public enum TruncateOptions { /// <summary> /// 不作任何处理 /// </summary> None = 0x0, /// <summary> /// 保留完整单词 /// </summary> FinishWord = 0x1, /// <summary> /// 允许最后一个单词超过最大长度限制 /// </summary> AllowLastWordToGoOverMaxLength = 0x2, /// <summary> /// 字符串最后跟省略号 /// </summary> IncludeEllipsis = 0x4 } #endregion } } |
声明:此博有部分内容为转载,版权归原作者所有~
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南