diff --git a/GameFrameX.Foundation.Extensions/StringExtensions.cs b/GameFrameX.Foundation.Extensions/StringExtensions.cs index ec4fefa..7f92bed 100644 --- a/GameFrameX.Foundation.Extensions/StringExtensions.cs +++ b/GameFrameX.Foundation.Extensions/StringExtensions.cs @@ -146,7 +146,7 @@ public static string FromUrlSafeBase64(this string value, bool addPadding) /// Regex for matching Chinese characters. /// Matching range includes basic Chinese characters (0x4e00-0x9fa5), excluding rare characters, variant characters, and other extended Chinese characters. /// - private static readonly Regex CnReg = new(@"[\u4e00-\u9fa5]"); + private static readonly Regex CnReg = new(@"[\u4e00-\u9fa5]", RegexOptions.None, TimeSpan.FromSeconds(1)); /// /// 计算字符串的显示宽度,汉字等宽字符算作 2 个单位宽度,其他字符算作 1 个单位宽度。 diff --git a/GameFrameX.Foundation.Tests/Extensions/StringExtensionsTests.cs b/GameFrameX.Foundation.Tests/Extensions/StringExtensionsTests.cs index 10a5ffc..9e920e6 100644 --- a/GameFrameX.Foundation.Tests/Extensions/StringExtensionsTests.cs +++ b/GameFrameX.Foundation.Tests/Extensions/StringExtensionsTests.cs @@ -745,6 +745,21 @@ public void TrimZhCn_StringWithoutChineseChars_ShouldReturnOriginalString() Assert.Equal("Hello World", result); } + [Fact] + public void TrimZhCn_CnReg_ShouldHaveOneSecondMatchTimeout() + { + // Arrange — 反射读取 CnReg 私有静态字段,验证 Sonar S6444 fix 实际生效。 + var field = typeof(StringExtensions).GetField("CnReg", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Static); + Assert.NotNull(field); + + // Act + var regex = (Regex)field.GetValue(null); + + // Assert + Assert.NotNull(regex); + Assert.Equal(TimeSpan.FromSeconds(1), regex.MatchTimeout); + } + #endregion #region EqualsFast Tests