FlowHeater Demo Video
 
FlowHeater - The Data Import / Export Specialist
 
Welcome, Guest
Username: Password: Remember me
  • Page:
  • 1

TOPIC: Split addressrow into name; number; letter

Split addressrow into name; number; letter 4 months 1 day ago #3453

  • Per-Olof Hermansson
  • Per-Olof Hermansson's Avatar Topic Author
  • Offline
  • Posts: 1
I often receive addresses where the postaladdress is contained in one field, but in our system we register the different parts of the addressrow in separate fields,
and I need to split them accordingly.

For Example: 'Lindhult Höjden 5A' needs to be 'Lindhult Höjden'; '5'; 'A'

Is this possible with Flowheater?

Thanks

Per-Olof

Please Log in or Create an account to join the conversation.

Last edit: by Per-Olof Hermansson.

Split addressrow into name; number; letter 4 months 1 day ago #3457

Hi Per-Olof,

It would be posible but you need the help of the .NET Script Heater and the little C# script below.

The script first finds out whether a number is a part of the adresse field and store the index of the first and the last occurience. Then the script build a new string with the delimiter “#” for each part. This string you can split with the String Split Heater an store the result in separate fields.

Please find attached a little example.

C# script to split address row
public object DoWork()
{
  if (InValues.Length < 1)
    throw new Exception("1 input parameter expected!");

  // get the first input parameter
  string s = (string)InValues[0].GetString();

  string output = String.Empty;

  int posFirstNumber = -1;
  int posLastNumber = -1;
  int lastPos = s.Length - 1;

  // check whether a number is a part of the address and get the first and last index
  for (int i = s.Length - 1; i >= 0; i--)
  {
    // check whether the character is nummeric?
    if (IsNumeric(s[i]))
    {
      if (posLastNumber == -1)
        posLastNumber = i;
    }
    else if (posLastNumber != -1 && posFirstNumber == -1)
      posFirstNumber = lastPos;

    lastPos = i;
  }

  if (posFirstNumber != -1)
  {
    // create output for the Split Heater
    output = s.Substring(0, posFirstNumber - 1);
    output += "#";
    output += s.Substring(posFirstNumber, posLastNumber - posFirstNumber + 1);
    output += "#";
    if (posLastNumber < s.Length)
      output += s.Substring(posLastNumber + 1);
  }
  else
  {
    // no number in address found
    output = s + "##";
  }

  return output;
}

public bool IsNumeric(char c)
{
  int output;
  return Int32.TryParse(c.ToString(), out output);	
}

File Attachment:

File Name: split-addresses.zip
File Size:3 KB

Best wishes
Robert Stark

Did this answer your question? We would be grateful if you provide a brief comment as feedback. It may also help others who may have encountered a similar problem.
Attachments:

Please Log in or Create an account to join the conversation.

Best wishes
Robert Stark

Did this answer your question? We would be grateful if you provide a brief comment as feedback. It may also help others who may have encountered a similar problem.
  • Page:
  • 1

other Languages

en
GB | US

de
DE | AT | CH

FlowHeater Home

de en

Imprint/Contact

Privacy Statement

Copyright © 2009-2018 by FlowHeater GmbH. All rights reserved.

Follow us on

twitter  facebook

YouTube

 de en