Kezdőoldal » Számítástechnika » Programozás » Hogy osszam fel ezt a stringet...

Hogy osszam fel ezt a stringet egy tömbbe? C#

Figyelt kérdés

Adott pl. egy ilyen string(de a nevek és az előjelek változhatnak):

+alma-banán-szilva+körte

Ezt kellene felosztanom, egy ilyen tömbbe:

string[] tomb = {"+alma","-banán","-szilva","+körte"};

A Split függvénnyel ugye eltűnnek az előjelek. Object és List nem használható.


2021. márc. 23. 15:09
 1/7 anonim ***** válasza:
46%
Gondolom a lényeg az volna, hogy írj egy ciklust és kerekterenként menj végig, nézd meg hol kezdődne az új szó, aztán rakd be egy tömbbe, deha annyira rövidíteni akarsz, akkor ott a regex.
2021. márc. 23. 15:19
Hasznos számodra ez a válasz?
 2/7 anonim ***** válasza:

Csak ötlet, de én regex-el csinálnám.


Python-ban pl így:


import re

x='+alma-banán-szilva+körte'

print(re.findall('[+-]\w+',x))

2021. márc. 23. 15:29
Hasznos számodra ez a válasz?
 3/7 anonim ***** válasza:

"+alma-banán-szilva+körte".Replace("+", " +").Replace("-", " -").Split(new []{' '}, StringSplitOptions.RemoveEmptyEntries)


persze ha alapból van benne szóköz, akkor ez nem jó.. akkor keress egy másik karaktert ami nemm szerpelhet, pl. soremelés?


Illetve azt hozzátenném, hogy ez nem egy hatékony módja a darabolásnak, csak akkor csináld így, ha rövid a szöveged vagy nem számít a sebesség.

De legalább gyorsan megvan:)

2021. márc. 24. 08:00
Hasznos számodra ez a válasz?
 4/7 A kérdező kommentje:

#3 Köszönöm szépen, pont ilyesmire gondoltam. :)

Nincs szóköz benne és nagyon max 4-5 szó hosszú a string, szóval tökéletes.

Én csak egy 15 soros dupla while ciklussal tudtam megcsinálni..

2021. márc. 24. 09:22
 5/7 anonim ***** válasza:

Amúgy itt van regex-szel is.. talán még rövidebb, mert csak 1x kell cserélni:

new System.Text.RegularExpressions.Regex("(.)([+-])").Replace("+alma-banán-szilva+körte", "$1 $2").Split(' ')

2021. márc. 24. 09:29
Hasznos számodra ez a válasz?
 6/7 anonim ***** válasza:

Regex ennél azért okosabb. Nem így kell használni. Látom a fenti python példa nem ment át. Megcsináltam ugyanezt C#-ban is.


[link]

2021. márc. 24. 11:18
Hasznos számodra ez a válasz?
 7/7 anonim ***** válasza:

De átjött, de azért láthatod, hogy csere+split jóval tömörebb kód, mint a matcheket utána kigyűjteni. Nyilván én is tudtam volna így.

Pont ezt akartam volan elkerülni amit írtál.

2021. márc. 24. 13:17
Hasznos számodra ez a válasz?

Kapcsolódó kérdések:




Minden jog fenntartva © 2025, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!