Getal na een aantal keer spatie

Status
Niet open voor verdere reacties.

Buchinhoren

Gebruiker
Lid geworden
5 feb 2016
Berichten
15
Hallo Allemaal,

Ik heb een string:
Code:
string test = "   v    0.00    0.00   12.00   ";

Hierin ben ik opzoek naar het getal 12.00

De lengte van de string kan veranderen, de letters,getallen en aantal spaties kunnen veranderen, Het enige wat vast staat is:
Het getal wat ik zoek komt altijd na de 4e keer spaties.
Dus de opbouw van de string is altijd:

Spaties - Karakters - Spaties - Karakters - Spaties - karakters - Spaties - GEWENST GETAL! - etc.

Ik zat zelf te denken aan indexOf eerste karakter wat geen spatie is,
Remove tot indexOf
indexOf eerste karakter wat wel spatie is
Remove tot indexOf
indexOf eerste karakter wat geen spatie is
Remove tot indexOf
indexOf eerste karakter wat wel spatie is
Remove tot indexOf
indexOf eerste karakter wat geen spatie is
Remove tot indexOf
IndexOf eerste karakter wat wel spatie is
Remove vanaf indexOf
double.Parse(string) (eventueel met replace punt in komma).

Echter lukt het mij niet om hier de juiste code bij te krijgen.

Kan iemand mij hiermee helpen?


Code:
 int i = test.IndexOf<char>(c => !char.IsWhiteSpace(c));

Geeft bij mij een foutmelding
 
Laatst bewerkt:
Hallo Buchinhoren,

Je kunt de Split-method gebruiken op een spatie (String[] TempArray=test.Split(' ');)
Daarna kun je door je Array heenlopen met een for-loop en als de TempArray.Length groter is dan 0 heb je een van je items.

Code:
TempArray=test.Split(' ');
            for (int i = 0; i < TempArray.Length; i++)
            {
                if (TempArray[i].Length > 0)
                {
                    //Een string met inhoud, actie
                }

            }
 
Hallo HelpElec,
Dank voor de reactie,

Dit is denk ik niet precies wat ik zoek.
Ik heb nu de volgende code:

Code:
char y;
            int x;
            string teststring = "   v    0.00    0.00   12.00   1234982734  ";
            x = teststring.TakeWhile(char.IsWhiteSpace).Count();
            teststring = teststring.Remove(0, x);
            x = teststring.TakeWhile(Y => !char.IsWhiteSpace(Y)).Count();
            teststring = teststring.Remove(0, x);
            x = teststring.TakeWhile(char.IsWhiteSpace).Count();
            teststring = teststring.Remove(0, x);
            x = teststring.TakeWhile(Y => !char.IsWhiteSpace(Y)).Count();
            teststring = teststring.Remove(0, x);
            x = teststring.TakeWhile(char.IsWhiteSpace).Count();
            teststring = teststring.Remove(0, x);
            x = teststring.TakeWhile(Y => !char.IsWhiteSpace(Y)).Count();
            teststring = teststring.Remove(x, teststring.Length);
            MessageBox.Show(teststring);

Het enige wat nu nog niet werkt is de laatste remove.
Ik moet hierbij de string verwijderen vanaf x, tot het einde van de string. Wat is de gemakkelijkste manier om dit te doen? teststring.Length geeft een foutmelding.
 
Heb hem!

x = teststring.TakeWhile(Y => !char.IsWhiteSpace(Y)).Count();
teststring = teststring.Remove(x, teststring.Length - x);
 
Je kunt ook alle spaties omzetten naar 1 spatie, dan kun je eenvoudig splitten op de spatie en index 3 (4e waarde) eruit vissen. (trim method om de nutteloze spaties voor en achteraan te negeren, kan ook voor de while)

[CPP]public string GetValue(string input)
{
while (input.Contains(" "))
input = input.Replace(" ", " ");

var inputValues = input.Trim().Split(' ');

return inputValues[3];
}[/CPP]

voorbeeld:
[CPP]string outputValue = GetValue(" v 0.00 0.00 12.00 ");[/CPP]
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan