Avatar billede CodingJoe Nybegynder
11. januar 2013 - 22:27 Der er 14 kommentarer og
1 løsning

Fjerne karakterer før eller efter et tegn.

Det er meget simpelt, men fisker efter eet udtryk, der kan gøre det for mig.

Jeg kan have følgende formater af en streng.
Eksempler:
a) 0-123
b) 123-4

Resultat a) skal være 123
Resultat b) skal være 123

dvs. Jeg vil gerne have fjernet det første ciffer efterfulgt af '-' eller det sidste ciffer, hvor '-' kommer lige før.
Tegnet '-' skal også fjernes.

Er der een, der kan hjælpe med eet udtryk for dette?
Avatar billede olebole Juniormester
11. januar 2013 - 22:36 #1
<ole>

Mens du lukker nogle af dine gamle tråde, kan du lige tænke over, om det så er tallet 'lige efter' eller 'lige før' bindestregen, som skal hives ud af dit eksempel b - og hvordan scriptet skal vide, hvilket tal du ønsker  =)

Hvad er mønstret præcist? Er det altid tre cifre, der skal ekstraheres - og er tallet på den anden side af bindestregen altid ét enkelt ciffer - og er der altid en bindestreg før eller efter?

/mvh
</bole>
Avatar billede CodingJoe Nybegynder
11. januar 2013 - 23:00 #2
Der er altid et enkelt ciffer før eller efter '-' og i det tilfælde skal tallet og '-' fjernes.

Jeg lukker gerne de gamle tråde, hvis der kommer et svar ind :)
Avatar billede olebole Juniormester
11. januar 2013 - 23:03 #3
Fair nok! Så tror jeg bare, du skal lukke tråden her
Avatar billede CodingJoe Nybegynder
11. januar 2013 - 23:11 #4
??? Øhmm...er det et eksempel på sarkasme over nettet, som er svær at fange?

Med svar i de gamle tråde, mener jeg, at jeg ikke har fået et indlæg af svartype eller jeg bare også fundet en alternativ måde at løse problemet på, hvor den alternative løsning divergerer fra mit oprindelige indlæg...

Jeg giver altid point på svar til mine indlæg...
Avatar billede olebole Juniormester
11. januar 2013 - 23:33 #5
Det er ikke umuligt. Jeg er i så fald ikke i stand til at afgøre, om dit indlæg var sarkasme.

Der er mange grunde til at trådene skal lukkes efterhånden, og det lader sig sagtens gøre uden et umiddelbart svar. Man kan f.eks. gøre, som du skikkert allerede ved, at Ekspertens FAQ beskriver: Man kan selv bede en bruger om at lægge et, hvis man er tilfreds. Alternativt kan man lægge et selv  *o)

Jeg har ikke modtaget point i snart tre år, så det er ikke interesen for dem, der er skyld mit indlæg
Avatar billede CodingJoe Nybegynder
11. januar 2013 - 23:38 #6
Jeg håber mit spørgsmål er beskrevet tilstrækkeligt, og hvis din hjælp kan komme mig nærmere mit mål, så giver jeg da gerne point...

Jeg har fundet, hvordan jeg kan fjerne alt før et '-', men problemet er, at jeg fandt ud af at jeg også havde følgende format:

123-1

hvor det så er '-1' der skal fjernes.
Det der er sikkert er at der altid er eet tal før eller efter bindestreg, og i de tilfælde skal det fjernes.

1-123 -> 123
223-0 -> 223
4-246 -> 246
289-3 -> 289

Etc.
Avatar billede olebole Juniormester
11. januar 2013 - 23:52 #7
Det kunne se sådan ud - forudsat, din streng hedder 's':

var out = s.replace(/(?:[0-9]-)?([0-9]+)(?:-[0-9])?/, "$1");
Avatar billede arne_v Ekspert
12. januar 2013 - 01:46 #8
Mit bud med udgangspunkt i altid 1 tal foer eller 1 tal efter:

using System;
using System.Text.RegularExpressions;

namespace E
{
    public class Program
    {
        private static readonly Regex retrim = new Regex(@"(^\d-)|(-\d$)", RegexOptions.Compiled);
        public static void Test(string s)
        {
            Console.WriteLine("{0} -> {1}", s, retrim.Replace(s, ""));
        }
        public static void Main(string[] args)
        {
            Test("1-123");
            Test("223-0");
            Test("4-246");
            Test("289-3");
            Console.ReadKey();
        }
    }
}
Avatar billede olebole Juniormester
12. januar 2013 - 03:13 #9
Arnes pattern har været på en sundere diæt og har motioneret en del mere end mit. Gå efter livvidde og kondital  *o)
Avatar billede olebole Juniormester
12. januar 2013 - 03:14 #10
- udover at jeg troede, jeg var i anden kategori. Derfor var mit JS-ish  =)
Avatar billede arne_v Ekspert
12. januar 2013 - 03:23 #11
Det er regexp kategorien, saa det kunne vaere et hvilket som helst sprog.

Jeg ved dog at spoerger kan C# (fra andre spoergsmaal), saa jeg valgte dette.
Avatar billede CodingJoe Nybegynder
12. januar 2013 - 09:19 #12
Arne har fuldstændigt ret. Måske skal jeg huske at skrive, det er i c# sammenhænge, jeg skal bruge det, så smid et svar ind kære Arne :D
Avatar billede CodingJoe Nybegynder
12. januar 2013 - 09:26 #13
...og selvfølgelig bruger du et '|' eller og starter enten forfra (^) eller bagfra ($). Tager (d) et tal forfulgt/efterfulgt af '-' og trimmer det væk.

Bør man ikke bruge String.Empty istedet for ""?
Avatar billede arne_v Ekspert
12. januar 2013 - 14:43 #14
svar
Avatar billede arne_v Ekspert
12. januar 2013 - 14:44 #15
Jeg har aldrig forstaaet pointen med String.Empty.

Det er rigtigt smart at bruge konstanter fremfor literals, hvis vaerdien skal aendres senere eller for bedre at dokumentere.

Men jeg spaar at String.Empty aldrig skal aendres og jeg finder "" meget nemt at laese.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester