---
title: "String.Split(string,size)"
type: "forum-thread"
url: "https://www.webforum.nu/amne/dotnet/174246-string-split-string-size"
topic: ".NET"
topic_url: "https://www.webforum.nu/amne/dotnet"
author: "Dino"
published: "2008-09-22T11:21:08.000Z"
updated: "2008-10-11T16:14:57.000Z"
replies: 16
views: 1295
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/dotnet/174246-string-split-string-size"
---

# String.Split(string,size)

## #1 — Dino, 2008-09-22T11:21Z

Skulle behöva hjälp med att skapa en metod som delar upp en sträng i delar, med *x* antal tecken i varje.

```
        public void btClick_Click(object sender, EventArgs e)
        {
            string data = "abcdefghijklmn";
            string[] col = SplitString(data, 4);
            foreach (string s in col)
            {
                Response.Write(s + "<br/>");
            }
        }

        private string[] SplitString(string s, int size)
        {
            //Code needed
        }

        Result:
        abcd
        efgh
        ijkl
        mn
```

Permalänk: https://www.webforum.nu/p/174246

## #2 — Peter S, 2008-09-22T11:58Z

Otestat:

```
private MatchCollection SplitString(string s, int size)
{
    if (size > 0)
    {
        StringBuilder regexBuilder = new StringBuilder("(");
        while (size-- > 0)
        {
            regexBuilder.Append("(?:.)?");
        }
        regexBuilder.Append(")");
        return Regex.Matches(s, regexBuilder.ToString());
    }
    return null;
}

MatchCollection coll = SplitString(data, 4);

if (coll != null)
{
  foreach (Match match in coll)
  {
    // use match.Value
  }
}
```

Permalänk: https://www.webforum.nu/p/2143098

## #3 — Nickemannen, 2008-09-22T12:06Z

Jag hade nog gjort såhär. Man kan antagligen få det mycket snabbare med for satser, men detta är en ganska snabb och enkel lösning.
Ett tips är ju att lägga det som en extension.
Det finns nog snabbare lösningar rent prestandamässigt.

```
public string[] SplitString(string value, int splitSize)
{
    Regex splitRegex = new Regex(string.Format(".{,{0}}", splitSize.ToString());

    MatchCollection matches = splitRegex.Matches(stringValue);

    string[] stringArray = new string[matches.Count];

    for(int i=0; i< matches.Count; i++)
    {
        stringArray[i] = matches[i].Value;
    }

    return stringArray;
}
```

Permalänk: https://www.webforum.nu/p/2143101

## #4 — spango, 2008-09-22T12:13Z

Eller bara... 

```
        public static IEnumerable<string> Chunkify(this string self, int chunkSize)
        {
            for (int i = 0; i < self.Length; i += chunkSize)
                yield return self.Substring(i, Math.Min(chunkSize, self.Length - i));
        }

        // ...
        foreach (string s in "abcdefghiklmn".Chunkify(4)) Console.Writeline(s);
```

Permalänk: https://www.webforum.nu/p/2143104

## #5 — Peter S, 2008-09-22T12:30Z

> **spango skrev:**
>
> Eller bara... 
>
>
> ```
>         public static IEnumerable<string> Chunkify(this string self, int chunkSize)
>         {
>             for (int i = 0; i < self.Length; i += chunkSize)
>                 yield return self.Substring(i, Math.Min(chunkSize, self.Length - i));
>         }
> 
> 
>         // ...
>         foreach (string s in "abcdefghiklmn".Chunkify(4)) Console.Writeline(s);
> ```

Vad vackert! Härmed är jag tårögd  (y)

Permalänk: https://www.webforum.nu/p/2143110

## #6 — johannormen, 2008-09-22T12:36Z

> **Peter S skrev:**
>
> Vad vackert! Härmed är jag tårögd  (y)

Snygg lösning. Men förstår inte missbruket av Extension metoder i detta fall. 

mvh Johan

Permalänk: https://www.webforum.nu/p/2143114

## #7 — spango, 2008-09-22T12:56Z

Kan man så ska man. ;) Jag överlåter bedömning om huruvida det är en lämplig kandidat för extensions eller inte till användaren.

Permalänk: https://www.webforum.nu/p/2143125

## #8 — johannormen, 2008-09-22T13:04Z

> **spango skrev:**
>
> Kan man så ska man. ;) Jag överlåter bedömning om huruvida det är en lämplig kandidat för extensions eller inte till användaren.

haha... Mm o man kan använda arv oxå ;-) till allt.. för att det finns där..
hehe...   :bire

Permalänk: https://www.webforum.nu/p/2143127

## #9 — Dino, 2008-09-22T21:03Z

Segern tilldelas spango. Arrangören tackar alla deltagare för dess medverkan till att göra denna fråga till *THE MOST BRUTAL QUESTION THIS DAY AND MAYBE EVEN THE FOLLOWING DAY*.

Permalänk: https://www.webforum.nu/p/2143339

## #10 — spango, 2008-09-23T08:00Z

> **johannormen skrev:**
>
> Mm o man kan använda arv oxå ;-) till allt.. för att det finns där..

Ja, jag tänkte på det till en början, men sen kom jag på att String är ju sealed   x(  så jag fick nöja mig med det Näst Bästa. (Eller *Second Most Brutal Solution* för att fortsätta i trådskaparens föredömliga anda (y) )

Permalänk: https://www.webforum.nu/p/2143413

## #11 — johannormen, 2008-09-30T08:46Z

> **spango skrev:**
>
> Ja, jag tänkte på det till en början, men sen kom jag på att String är ju sealed   x(  så jag fick nöja mig med det Näst Bästa. (Eller *Second Most Brutal Solution* för att fortsätta i trådskaparens föredömliga anda (y) )

Inget fel på extensionmetoden så länge du vet att du kommer använda den mer än en gång på andra ställen.

Permalänk: https://www.webforum.nu/p/2144635

## #12 — inspiro, 2008-10-09T09:36Z

Hur implementerar man en extension? Det står att "extension methods  måste implementeras i en non generic static class?

Permalänk: https://www.webforum.nu/p/2149017

## #13 — Compusa, 2008-10-09T10:52Z

inspiro, se exemplet nedan:

```
class Program
{
    static void Main(string[] args)
    {
        string customerEmailAddress = "test@test.com";
        if (customerEmailAddress.IsValidEmailAddress())
        {
            // Do Something...
        }
    }
}

public static class Extensions
{
    public static bool IsValidEmailAddress(this string s)
    {
        Regex regex = new Regex(@"^[\w-\.]+@([\w-]+\.)+[\w-]{2,4}$");
        return regex.IsMatch(s);
    }
}
```

Permalänk: https://www.webforum.nu/p/2149022

## #14 — inspiro, 2008-10-09T11:07Z

Tack! :)

Permalänk: https://www.webforum.nu/p/2149024

## #15 — johannormen, 2008-10-11T14:39Z

> **Compusa skrev:**
>
> inspiro, se exemplet nedan:
> 
>
>
> ```
> class Program
> {
>     static void Main(string[] args)
>     {
>         string customerEmailAddress = "test@test.com";
>         if (customerEmailAddress.IsValidEmailAddress())
>         {
>             // Do Something...
>         }
>     }
> }
> 
> public static class Extensions
> {
>     public static bool IsValidEmailAddress(this string s)
>     {
>         Regex regex = new Regex(@"^[\w-\.]+@([\w-]+\.)+[\w-]{2,4}$");
>         return regex.IsMatch(s);
>     }
> }
> ```

Här måste jag leka doktor o lägga mig i lite :-/

Gör helst inte på detta sätt för du binder en unik funktion till hela stringtypen. Ex alla string som finns i det scope där denna extensions används kommer helt plötsligt ha en metod som kollar e-mail. 

ex. name.IsValidEmail()...
productName.IsValidEmail()...
password.IsValidEmail()...
file.IsValidEmail()...

Detta är att missbruka extensions... Här är ett typiskt fall då man bör undvika extension och lägga dem i en validerator klass istället. 
typ:
Validator.IsValidEmail(email)

Detta är en typiskt regel för Singel responsability principle och single responsability rule. 

koddotorn har talat ;-)

mvh Johan

Permalänk: https://www.webforum.nu/p/2149283

## #16 — Compusa, 2008-10-11T15:46Z

Nu googlade jag bara fram ett exempel för att snabbt visa inspiro syntaxen för extensions. Jag var helt enkelt för lat för att skriva ihop något själv. Tanken med exemplet var alltså inte att visa "best practice" gällande hur man bör använda extensions. Ibland får man ta ett exempel för vad det är helt enkelt. 

Bra påpekande hur som helst och jag delar din åsikt helt och hållet.

Permalänk: https://www.webforum.nu/p/2149291

## #17 — johannormen, 2008-10-11T16:14Z

> **Compusa skrev:**
>
> Nu googlade jag bara fram ett exempel för att snabbt visa inspiro syntaxen för extensions. Jag var helt enkelt för lat för att skriva ihop något själv. Tanken med exemplet var alltså inte att visa "best practice" gällande hur man bör använda extensions. Ibland får man ta ett exempel för vad det är helt enkelt. 
> 
> Bra påpekande hur som helst och jag delar din åsikt helt och hållet.

:-)

Det är oftast det som är så dumt med fel exempel, jag är inte bäst på visa bra exempel alltid heller, problemet är att de som ser dem kan tro man skall göra så...

Permalänk: https://www.webforum.nu/p/2149294

---

Tråden på webben: https://www.webforum.nu/amne/dotnet/174246-string-split-string-size
