Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it L'avatar di torn24
    Registrato dal
    Aug 2008
    Messaggi
    551

    [c#] conversione array di char in string

    Ciao!
    Come premessa , vorrei informare che le mie conoscenze del linguaggio C sharp sono
    minime , quindi nell'affrontare il problema risolto dal programma , ho adottato un approccio
    stile linguaggio C usando array di char , e evitanto di usare metodi per le stringhe.

    Do una breve descrizione del problema che il programma dovrebbe risolvere per pura
    eventuale curiosità di qualche utente.

    in un file di testo sono presenti delle variabili il cui nome comincia sempre con # e seguito
    da un numero che indica la variabile ad esempio #100 variabile 100 .
    il programma deve individuare e stampare le variabili che sono presenti nel testo.

    Esempio testo :
    x#100f100g1#300

    Esempio Output :
    #100
    #300

    PROBLEMA EFFETTIVAMENTE RISCONTRATO
    usando array di char ho necessità di convertirli in string
    ho provato diversi modi tra cui.
    array.ToString();
    Convert.ToString(array);
    String stringa = new String(array);
    nessuno sembra funzionare correttamente per qualche motivo.
    il programma funziona ,perche stampando carattere per carattere l'array di char l'output è
    corretto
    Allego il sorgente
    codice:
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    using System.IO;
    namespace Controllo_presenza_variabili_Fanuc
    {
        public partial class Form1 : Form
        {
            public string buffer;
            public Form1()
            {
                InitializeComponent();
            }
    
            private void Apri_file_Click(object sender, EventArgs e)
            {
    
                /* leggo il file e inserisco tutto
                 * il contenuto in una variabile "globale" buffer *
                 * alla fine richiamo la funzione trova */
               openFileDialog1.ShowDialog();
               string path= openFileDialog1.FileName;
               StreamReader leggi = new StreamReader(path);
               buffer = leggi.ReadToEnd();
               leggi.Close();
               Trova_variabili();
            }
    
    
            private void Trova_variabili()
            {
                
                char[] array = new char[20]; // creo una array che conterrà carattere per carattere la variabile trovata
                char[] barray = new char[8000] ; //dichiaro un array di char che possa contenere tutti i caratteri del file
                barray= buffer.ToCharArray(); // trasformo buffer string in array char
                int i,j,l;
                for (i = 0; i<buffer.Length ; i++)
                {
                    /*leggo l' array contenente il file carattere per
                     * carattere , quando incontro il carattere # 
                     * ho trovato una variabile */
                    char carattere=barray[i];
                    if (carattere == '#')
                    {
                        
                        for ( j =i, l=0; ; j++ , l++)
                        {
                            /*parto a scorrere l'array dal carattere #
                             * fino a quando trovo carratteri diversi da un numero
                             * e memorizzo in array */
                            if (barray[j] != '#')
                            {
                                if (Convert.ToInt16(barray[j]) < 48 || Convert.ToInt16(barray[j]) >57)
                                    break;
                                array[l] = barray[j];
                                
                            }
                            
                        }
                        /*
                        stampando carattere per carattere tutto ok
                        ma per sviluppi del programma ho necessita di convertirlo
                        in string  come posso fare??
                        for (int d = 0; d < 20; d++)
                            textBox1.Text = textBox1.Text + array[d];
                        textBox1.Text = textBox1.Text + "\r\n";
                            
                    */
                        string stringa = new string(array);
                        textBox1.Text = textBox1.Text + "#" + stringa + "\r\n";
                    }
                    
                        
                }
    
                
            
            
            
            
            }
        }
    }
    Tecnologia

  2. #2
    Utente di HTML.it L'avatar di torn24
    Registrato dal
    Aug 2008
    Messaggi
    551

    ciao

    Provando varie soluzioni , mi sono accorto che array[0] non veniva inizializzato ,
    questo , per qualche motivo a me sconosciuto impediva la conversione a string
    tramite il modo
    string stringa=new string(array);
    Tecnologia

  3. #3

    Re: ciao

    Originariamente inviato da torn24
    Provando varie soluzioni , mi sono accorto che array[0] non veniva inizializzato ,
    questo , per qualche motivo a me sconosciuto impediva la conversione a string
    tramite il modo
    string stringa=new string(array);
    Il motivo è che quel costruttore di string converte l'array finchè trova il valore 0 (NULL, il terminatore nullo insomma).

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.