Заменить текст, хранящийся в строке - PullRequest
0 голосов
/ 17 февраля 2020

Используя iText 5.5, я пытаюсь присвоить значение из списка переменной. Любой профессионал, готовый помочь любителю?

Файл, который я анализирую: https://slicedinvoices.com/pdf/wordpress-pdf-invoice-plugin-sample.pdf

Вот мой код:

using iTextSharp.text.pdf;
using iTextSharp.text.pdf.parser;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace PDF_file_reader
{
    class Program
    {
        static void Main(string[] args)
        {

            List<string> InvoiceNumbers = new List<string>();

            string filePath = @"C:\temp\parser\Invoice_Template.pdf";
            int pagesToScan = 2;

            string strText = string.Empty;
            try
            {
                PdfReader reader = new PdfReader(filePath);

                for (int page = 1; page <= pagesToScan; page++) //(int page = 1; page <= reader.NumberOfPages; page++) <- for scanning all the pages in A PDF
                {
                    ITextExtractionStrategy its = new LocationTextExtractionStrategy();
                    strText = PdfTextExtractor.GetTextFromPage(reader, page, its);

                    strText = Encoding.UTF8.GetString(ASCIIEncoding.Convert(Encoding.Default, Encoding.UTF8, Encoding.Default.GetBytes(strText)));
                    //creating the string array and storing the PDF line by line
                    string[] lines = strText.Split('\n');
                    foreach (string line in lines)
                    {
                        if (line.Contains("Invoice Number"))
                        {
                            InvoiceNumbers.Add(line.Trim());
                            break;
                        }
                    }

                    var match = InvoiceNumbers.FirstOrDefault(stringToCheck => stringToCheck.Contains("Invoice Number"));

                    match.Replace("Invoice number", "").Trim();

                    Console.Write(match);

                    Console.Read();
                }

            }
            catch (Exception ex)
            {
                Console.Write(ex);
            }
        }
    }
}

Мне нужно match будет INV-3337 в настоящее время кажется Invoice Number INV-3337. Почему эта команда:

match.Replace("Invoice number", "").Trim();?

не выполняет замену.

Мой вывод:

enter image description here

Ответы [ 2 ]

2 голосов
/ 17 февраля 2020

Не работает, потому что совпадение чувствительно к регистру (заглавные N против строчных n).

match = match.Replace("Invoice Number", "").Trim();
1 голос
/ 17 февраля 2020

Вместо записи:

match.Replace("Invoice number", "").Trim();

используйте:

match = match.Replace("Invoice Number", "").Trim();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...