Esempio n. 1
0
        /// <summary>
        /// Remove a comment in a string
        /// </summary>
        public static string RemoveComment(string bufferToManage, string commentStartTag)
        {
            if (bufferToManage == null)
            {
                throw new NolmeArgumentNullException();
            }
            if (commentStartTag == null)
            {
                throw new NolmeArgumentNullException();
            }

            string ResultBuffer, ResultBufferTrim;
            int    QuoteStart, QuoteEnd, iQuote;
            int    iCommentStart;

            // Check if a comment is inserted
            iCommentStart = bufferToManage.IndexOf(commentStartTag);
            if (iCommentStart == -1)
            {
                // No comment inside, return same string
                ResultBuffer = bufferToManage;
            }
            else
            {
                // A comment tag has been found but it may be inside a string
                QuoteStart = bufferToManage.IndexOf("\"");
                if (QuoteStart == -1)
                {
                    // Return from [0..iCommentStart[
                    // Comment is at  iCommentStart with length bufferToManage.Length-iCommentStart
                    ResultBuffer = bufferToManage.Substring(0, iCommentStart);
                }
                else
                {
                    // Check before if quote start AFTER comment start
                    if (iCommentStart < QuoteStart)
                    {
                        // Return from [0..iCommentStart[
                        // Comment is at  iCommentStart with length bufferToManage.Length-iCommentStart
                        ResultBuffer = bufferToManage.Substring(0, iCommentStart);
                    }
                    else
                    {
                        // String & comment both exists, check if last commentStartTag is after last quote so it's a real comment to end of line
                        QuoteEnd = bufferToManage.IndexOf("\"", QuoteStart + 1);
                        if (QuoteEnd == -1)
                        {
                            // [ERROR] String not well terminated, assume full string
                            ResultBuffer = bufferToManage + "\"";
                        }
                        else
                        {
                            iQuote        = bufferToManage.LastIndexOf("\"");
                            iCommentStart = bufferToManage.LastIndexOf(commentStartTag);
                            if (iCommentStart > iQuote)
                            {
                                // Remove this comment
                                ResultBuffer = bufferToManage.Substring(0, iCommentStart);
                            }
                            else
                            {
                                // comment tag is inside string, don't modify
                                ResultBuffer = bufferToManage;
                            }
                        }
                    }
                }
            }

            // Last stage, remove start spaces & stabs
            ResultBufferTrim = ResultBuffer.Trim();
            return(ResultBufferTrim);
        }