@@ -126,13 +126,14 @@ public static Int32[] SplitAsInt(this String? value, params String[] separators)
126
126
if ( nameValueSeparator . IsNullOrEmpty ( ) ) nameValueSeparator = "=" ;
127
127
//if (separator == null || separator.Length <= 0) separator = new String[] { ",", ";" };
128
128
129
- var ss = value . Split ( new [ ] { separator } , StringSplitOptions . RemoveEmptyEntries ) ;
129
+ var ss = value . Split ( [ separator ] , StringSplitOptions . RemoveEmptyEntries ) ;
130
130
if ( ss == null || ss . Length <= 0 ) return dic ;
131
131
132
132
var k = 0 ;
133
133
foreach ( var item in ss )
134
134
{
135
- var p = item . IndexOf ( nameValueSeparator ) ;
135
+ // 如果分隔符是 \u0001,则必须使用Ordinal,否则无法分割直接返回0。在RocketMQ中有这种情况
136
+ var p = item . IndexOf ( nameValueSeparator , StringComparison . Ordinal ) ;
136
137
if ( p <= 0 )
137
138
{
138
139
dic [ $ "[{ k } ]"] = item ;
@@ -544,7 +545,7 @@ public static String CutStart(this String str, params String[] starts)
544
545
545
546
for ( var i = 0 ; i < starts . Length ; i ++ )
546
547
{
547
- var p = str . IndexOf ( starts [ i ] ) ;
548
+ var p = str . IndexOf ( starts [ i ] , StringComparison . Ordinal ) ;
548
549
if ( p >= 0 )
549
550
{
550
551
str = str [ ( p + starts [ i ] . Length ) ..] ;
@@ -565,7 +566,7 @@ public static String CutEnd(this String str, params String[] ends)
565
566
566
567
for ( var i = 0 ; i < ends . Length ; i ++ )
567
568
{
568
- var p = str . LastIndexOf ( ends [ i ] ) ;
569
+ var p = str . LastIndexOf ( ends [ i ] , StringComparison . Ordinal ) ;
569
570
if ( p >= 0 )
570
571
{
571
572
str = str [ ..p ] ;
0 commit comments