public void EndsWith() { string source = "abcde"; var seg = new StringSegment(source); Assert.IsTrue(seg.EndsWith("cde")); source = "abCDe"; seg = new StringSegment(source); Assert.IsFalse(seg.EndsWith("cde")); source = "abCDe"; seg = new StringSegment(source); Assert.IsTrue(seg.EndsWith("cde", true)); source = "de"; seg = new StringSegment(source); Assert.IsFalse(seg.EndsWith("cde")); source = "abcd"; seg = new StringSegment(source); Assert.IsFalse(seg.EndsWith("bc")); source = "abcd"; var segBCD = new StringSegment(source, 1, 3); Assert.IsTrue(segBCD.EndsWith("cd")); Assert.IsTrue(segBCD.EndsWith('d')); }
/// <summary> /// 获取JSON格式的值 /// </summary> /// <param name="member"></param> /// <returns></returns> public static CodeType GetValueType(StringSegment code) { var codeType = CodeType.NonStringValue; if (code.Length >= 2) { if ((code.StartsWith('\"') && code.EndsWith('\"')) || (code.StartsWith('\'') && code.EndsWith('\''))) { codeType = CodeType.StringValue; } } return(codeType); }
// Returns true if the value starts and ends with a quote private bool IsQuoted(StringSegment value) { Contract.Assert(value != null); return(value.Length > 1 && value.StartsWith("\"", StringComparison.Ordinal) && value.EndsWith("\"", StringComparison.Ordinal)); }
// Add/update the given parameter in the list, encoding if necessary. // Remove if value is null/Empty private void SetName(StringSegment parameter, StringSegment value) { var nameParameter = NameValueHeaderValue.Find(_parameters, parameter); if (StringSegment.IsNullOrEmpty(value)) { // Remove parameter if (nameParameter != null) { _parameters.Remove(nameParameter); } } else { var processedValue = StringSegment.Empty; if (parameter.EndsWith("*", StringComparison.Ordinal)) { processedValue = Encode5987(value); } else { processedValue = EncodeAndQuoteMime(value); } if (nameParameter != null) { nameParameter.Value = processedValue; } else { Parameters.Add(new NameValueHeaderValue(parameter, processedValue)); } } }
public static bool IsObject(StringSegment code) { if (code.StartsWith("{")) { if (!code.EndsWith("}")) { throw new CodeFormatErrorException(code.ToString() + "以 { 作为首字符,但是没有以 } 结尾! "); } return(true); } return(false); }
public static bool IsList(StringSegment code) { if (code.StartsWith("[")) { if (!code.EndsWith("]")) { throw new CodeFormatErrorException(code.ToString() + "以 [ 作为首字符,但是没有以 ] 结尾! "); } return(true); } return(false); }
public static StringSegment TrimHtmlCdata(this StringSegment segment) { if (segment.StartsWith("<!--//--><![CDATA[//><!--", StringComparison.Ordinal)) { segment = segment.Subsegment("<!--//--><![CDATA[//><!--".Length); } else if (segment.StartsWith("<!--/*--><![CDATA[/*><!--*/", StringComparison.Ordinal)) { segment = segment.Subsegment("<!--/*--><![CDATA[/*><!--*/".Length); } if (segment.EndsWith("//--><!]]>", StringComparison.Ordinal)) { segment = segment.Subsegment(0, segment.Length - "//--><!]]>".Length); } else if (segment.EndsWith("/*]]>*/-->", StringComparison.Ordinal)) { segment = segment.Subsegment(0, segment.Length - "/*]]>*/-->".Length); } return(segment); }
public InterceptMode InterceptOnce() { StringSegment etag = SingleSegment(_response, "ETag"); if (!etag.HasValue) { return(InterceptMode.DoingNothing); } if (etag.StartsWith("\"", StringComparison.Ordinal) && etag.EndsWith("\"", StringComparison.Ordinal)) { _compressedETag = etag.Substring(0, etag.Count - 1) + "^" + _encoding.Name + "\""; } else { _compressedETag = "\"" + etag.Value + "^" + _encoding.Name + "\""; } HttpStatusCode statusCode = (HttpStatusCode)_response.StatusCode; if (statusCode == HttpStatusCode.NotModified) { return(InterceptMode.SentFromStorage); } var key = new CompressedKey { ETag = _compressedETag, RequestPath = _request.Path, RequestQueryString = _request.QueryString, RequestMethod = _request.Method, }; _compressedItem = _storage.Open(key); if (_compressedItem != null) { return(InterceptMode.SentFromStorage); } _compressedItemBuilder = _storage.Create(key); _compressingStream = _encoding.CompressTo(_compressedItemBuilder.Stream); return(InterceptMode.CompressingToStorage); }
public void StringSegment_EndsWith_Invalid() { // Arrange var segment = new StringSegment(); // Act var result = segment.EndsWith(string.Empty, StringComparison.Ordinal); // Assert Assert.False(result); }
public void StringSegment_EndsWith_Valid(string candidate, StringComparison comparison, bool expectedResult) { // Arrange var segment = new StringSegment("Hello, World!", 1, 4); // Act var result = segment.EndsWith(candidate, comparison); // Assert Assert.Equal(expectedResult, result); }
public bool EndsWith() => _largeSegment.EndsWith("ld!", StringComparison.Ordinal);