encontrar numero y remplazarlo por otro en archivo .txt????

Respondida encontrar numero y remplazarlo por otro en archivo .txt????

  • miércoles, 22 de agosto de 2012 5:42
     
     

    hola un saludo para la comunidad... 

    me encuentro en la siguiente situación:

    tengo un achivo .txt

    en el cual tengo 55,500 renglones

    cada renglon tiene como maximo 10 palabras

    y cada palabra se conforma de esta forma (ejemplo..)

    nombre direccion telefono id contraseña sexo

    donde nombre=string de solo letras

    direccion=string letras y numeros 

    telefono=string solo numeros

    id=int solo numeros

    contraseña=string letras y numeros

    sexo=string un numero 1=masculino 2=femenino 

    el problema es que me pidieron editar renglones y agregar unos mas, entonces como agregue renglones los id que eran secuenciales de menor a mayor ya no son los mismos van cambiando entonces estoy buscando una forma de ir cambiando el id de cada renglón con algún siclo ya sea for u otro..

    alguna idea... lo estoy manejando como un archivo de texto(.txt) pero en realidad es un script de sql, que es para insertar artículos a una tabla, dicho script se modifico y se actualizo con mas renglones por eso la necesidad de actualizar el (id) de forma secuencial a todos los artículos..

    de antemano gracias.... 


    LOWELLPELIKNO

Todas las respuestas

  • miércoles, 22 de agosto de 2012 11:34
     
     

    Es posible hacerlo desde c#, pero quiza te sea más rapido y sencillo hacerlo desde SQL Server, importando el txt en una tabla temporal y luego con alguna query transformar como lo necesitas, incluso lo puedes volver a exportar a un txt si lo necesita..

    Si necesita mas ayuda, cuentanos..
  • miércoles, 22 de agosto de 2012 11:58
    Moderador
     
     

    el problema es que me pidieron editar renglones y agregar unos mas, entonces como agregue renglones los id que eran secuenciales de menor a mayor ya no son los mismos van cambiando entonces estoy buscando una forma de ir cambiando el id de cada renglón con algún siclo ya sea for u otro.

    pero este archivo tiene alguna forma de parsear cada dato de cada renglon ? quizas algun separador

    porque si es asi recomendaria uses

    http://filehelpers.sourceforge.net/

    aunque como comenta Ronald seria mejor si piensas en usar una base de datos, por el volumen de info creo que es la mejor opcion, un archivo no es performante

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

  • miércoles, 22 de agosto de 2012 16:16
     
      Tiene código

    gracias por sus respuestas aquí esta el ejemplo de script solo una pequeñísima parte:

    IF((SELECT COUNT(*) FROM dbo.cd_medication) = 0)
    BEGIN
    
    BEGIN TRANSACTION
    
    SET IDENTITY_INSERT [dbo].[cd_medication] ON
    INSERT [dbo].[cd_medication] ([medication_id], [medication_name], [totpaid], [deduct], [dayssupl], [sub]) VALUES (1, N'ABACAVIR SULFATE', 403, 6, 33, 1)
    INSERT [dbo].[cd_medication] ([medication_id], [medication_name], [totpaid], [deduct], [dayssupl], [sub]) VALUES (2, N'ABACAVIR SULFATE & LAMIVUDINE', 742, 20, 31, 1)
    INSERT [dbo].[cd_medication] ([medication_id], [medication_name], [totpaid], [deduct], [dayssupl], [sub]) VALUES (3, N'ABACAVIR SULFATE & ZIDOVUDINE & LAMIVUDINE', 1141, 19, 32, 1)
    INSERT [dbo].[cd_medication] ([medication_id], [medication_name], [totpaid], [deduct], [dayssupl], [sub]) VALUES (4, N'ABATACEPT', 5707, 2, 28, 1)
    INSERT [dbo].[cd_medication] ([medication_id], [medication_name], [totpaid], [deduct], [dayssupl], [sub]) VALUES (5, N'ACAMPROSATE CALCIUM', 32, 3, 5, 1)
    INSERT [dbo].[cd_medication] ([medication_id], [medication_name], [totpaid], [deduct], [dayssupl], [sub]) VALUES (6, N'ACARBOSE', 30, 4, 30, 1)
    INSERT [dbo].[cd_medication] ([medication_id], [medication_name], [totpaid], [deduct], [dayssupl], [sub]) VALUES (7, N'ACEBUTOLOL HCL', 25, 6, 56, 1)
    INSERT [dbo].[cd_medication] ([medication_id], [medication_name], [totpaid], [deduct], [dayssupl], [sub]) VALUES (8, N'ACETAMINOPHEN', 14, 2, 12, 1)
    INSERT [dbo].[cd_medication] ([medication_id], [medication_name], [totpaid], [deduct], [dayssupl], [sub]) VALUES (9, N'ACETAMINOPHEN & CAFFEINE & CODEINE PHOSPHATE', 7, 4, 16, 1)
    INSERT [dbo].[cd_medication] ([medication_id], [medication_name], [totpaid], [deduct], [dayssupl], [sub]) VALUES (10, N'ACETAMINOPHEN & CODEINE PHOSPHATE', 21, 4, 19, 1)
    INSERT [dbo].[cd_medication] ([medication_id], [medication_name], [totpaid], [deduct], [dayssupl], [sub]) VALUES (11, N'ACETAZOLAMIDE', 6, 3, 18, 1)
    INSERT [dbo].[cd_medication] ([medication_id], [medication_name], [totpaid], [deduct], [dayssupl], [sub]) VALUES (12, N'ACETYLCYSTEINE', 213, 3, 26, 1)
    INSERT [dbo].[cd_medication] ([medication_id], [medication_name], [totpaid], [deduct], [dayssupl], [sub]) VALUES (13, N'ACETYLSALICYLIC ACID', 0, 0, 7, 1)
    INSERT [dbo].[cd_medication] ([medication_id], [medication_name], [totpaid], [deduct], [dayssupl], [sub]) VALUES (14, N'ACITRETIN', 90, 8, 35, 1)
    INSERT [dbo].[cd_medication] ([medication_id], [medication_name], [totpaid], [deduct], [dayssupl], [sub]) VALUES (15, N'ACYCLOVIR', 118, 7, 28, 1)
    INSERT [dbo].[cd_medication] ([medication_id], [medication_name], [totpaid], [deduct], [dayssupl], [sub]) VALUES (16, N'ADALIMUMAB', 1769, 46, 27, 1)
    INSERT [dbo].[cd_medication] ([medication_id], [medication_name], [totpaid], [deduct], [dayssupl], [sub]) VALUES (17, N'ADAPALENE', 50, 2, 34, 1)
    INSERT [dbo].[cd_medication] ([medication_id], [medication_name], [totpaid], [deduct], [dayssupl], [sub]) VALUES (18, N'ADEFOVIR DIPIVOXIL', 1101, 65, 49, 1)
    INSERT [dbo].[cd_medication] ([medication_id], [medication_name], [totpaid], [deduct], [dayssupl], [sub]) VALUES (19, N'ADENOSINE DEAMINASE', 5228, 2, 5, 1)
    INSERT [dbo].[cd_medication] ([medication_id], [medication_name], [totpaid], [deduct], [dayssupl], [sub]) VALUES (20, N'ALDESLEUKIN', 466, 45, 1, 1)
    INSERT [dbo].[cd_medication] ([medication_id], [medication_name], [totpaid], [deduct], [dayssupl], [sub]) VALUES (21, N'ALEMTUZUMAB', 3822, 2, 12, 1)
    INSERT [dbo].[cd_medication] ([medication_id], [medication_name], [totpaid], [deduct], [dayssupl], [sub]) VALUES (22, N'ALENDRONATE SODIUM', 42, 7, 42, 1)
    INSERT [dbo].[cd_medication] ([medication_id], [medication_name], [totpaid], [deduct], [dayssupl], [sub]) VALUES (23, N'ALENDRONATE SODIUM & VITAMIN D3', 55, 7, 36, 1)
    INSERT [dbo].[cd_medication] ([medication_id], [medication_name], [totpaid], [deduct], [dayssupl], [sub]) VALUES (24, N'ALFACALCIDOL', 38, 4, 45, 1)
    INSERT [dbo].[cd_medication] ([medication_id], [medication_name], [totpaid], [deduct], [dayssupl], [sub]) VALUES (25, N'ALFUZOSIN HCL', 34, 6, 48, 1)
    
    SET IDENTITY_INSERT [dbo].[cd_medication] OFF
    
    COMMIT TRANSACTION
    END

    en la parte donde dice VALUES (1,N'XXXX) LO QUE NECESITO CAMBIAR ES EL NUMERO 1 O EL NUMERO QUE SE ENCUENTRE AHI POR EL DEL SICLO FOR DIRIA YO 


    LOWELLPELIKNO

  • jueves, 23 de agosto de 2012 22:09
     
     Respondida Tiene código
    using System;
    using System.Text.RegularExpressions;
    
    namespace ConsoleApplication1
    {
        class Program
        {
            static void Main(string[] args)
            {
                string línea;
                int i = 0;
                Regex rex = new Regex("VALUES\\s*\\(\\s*\\d+");
    
                while ((línea = Console.ReadLine()) != null)
                {
                    if (rex.Match(línea).Success) i++;
                    Console.WriteLine(rex.Replace(línea, "VALUES (" + i.ToString()));
                }
            }
        }
    }
    

    ConsoleApplication1.exe < scriptOrigen.txt > scriptNuevo.txt
    • Marcado como respuesta Eder CostaOwner viernes, 24 de agosto de 2012 15:01
    •