Separate the house number from the street name: Difference between revisions

m
syntax highlighting fixup automation
m (→‎{{header|J}}: improve heuristics)
m (syntax highlighting fixup automation)
Line 49:
{{trans|Nim}}
 
<langsyntaxhighlight lang="11l">F separateHouseNumber(address)
V fields = address.split_py()
V last = fields.last
Line 102:
L(address) Addresses
V (street, house) = separateHouseNumber(address)
print(street.rjust(22)‘ ’(I !house.empty {house} E ‘(none)’))</langsyntaxhighlight>
 
{{out}}
Line 144:
 
=={{header|EchoLisp}}==
<langsyntaxhighlight lang="scheme">
(lib 'struct)
(lib 'sql)
Line 208:
"Schmidener Weg 3"
"Karl-Weysser-Str. 6"))
</syntaxhighlight>
</lang>
{{out}}
<pre>
Line 250:
 
=={{header|F_Sharp|F#}}==
<langsyntaxhighlight lang="fsharp">
// Seperate house number and street in Dutch addresses. Nigel Galloway: September 23rd., 2021
let fN g=let n=System.Text.RegularExpressions.Regex.Match(g,@"(\s\d+[-/]\d+)|(\s(?!1940|1945)\d+[a-zI. /]*\d*)$") in if n.Success then Some(g.[0..n.Index],n.Value) else None
Line 256:
printfn " Street Number\n ______ ______"
td|>List.iter(fun g->match fN g with Some(n,g)->printfn $"%27s{n.Trim()} %s{g}" |_->printfn $"FAILED %s{g}")
</syntaxhighlight>
</lang>
{{out}}
<pre>
Line 299:
=={{header|Go}}==
{{trans|Kotlin}}
<langsyntaxhighlight lang="go">package main
 
import (
Line 375:
fmt.Printf("%-22s %s\n", street, house)
}
}</langsyntaxhighlight>
 
{{out}}
Line 421:
{{Works with|GHC|7.8.3}}
 
<langsyntaxhighlight lang="haskell">{-# LANGUAGE OverloadedStrings #-}
 
{- Recommended package versions to use:
Line 521:
Right r -> return r
pairs <- mapM (splitAddress rx) testSet
mapM_ T.putStrLn $ formatPairs pairs</langsyntaxhighlight>
{{out}}
<pre>
Line 564:
 
'''Solution''':
<langsyntaxhighlight lang="j">special=: '4',.'012345'
digit=: '0123456789'
nope=: {{>./({.I.y=' '),1+I. special +./@:(E."1) y}}
here=: {{I.1,~y e.digit}}
din5008=: ({.;}.)~ here {.@#~ nope < here</langsyntaxhighlight>
 
Sample data:
 
<langsyntaxhighlight lang="j"> sampledata=: ];._2 noun define
Straat 12
Straat 12 II
Line 606:
Schmidener Weg 3
Karl-Weysser-Str. 6
)</langsyntaxhighlight>
 
'''Example''':<langsyntaxhighlight lang="j"> din5008"1 sampledata
┌───────────────────┬────────────────┐
│Straat │12 │
Line 673:
├───────────────────┼────────────────┤
│Karl-Weysser-Str. │6 │
└───────────────────┴────────────────┘</langsyntaxhighlight>
 
=={{header|jq}}==
Line 685:
"(?<s>.*) (?<n> (\\s\\d+[-/]\\d+) | (\\s(?!1940|1945)\\d+[a-zI. /]*\\d*)$ | \\d+\\['][40|45]$ )"
</pre>
<langsyntaxhighlight lang="jq">def regex:
"^ (?<s>.*?) \\s+"
+ " (?<n>\\d* ( \\-|\\/)? \\d*"
Line 700:
| .n |= if . == "" or . == null then "(none)" else . end ;
 
def lpad($len): tostring | ($len - length) as $l | (" " * $l)[:$l] + .;</langsyntaxhighlight>
'''The Task'''
<langsyntaxhighlight lang="jq">def addresses:
"Plataanstraat 5",
"Straat 12",
Line 745:
| "\(.s|lpad(22)) \(.n)" ) ;
 
task</langsyntaxhighlight>
{{out}}
<pre>
Line 787:
=={{header|Julia}}==
Uses the regex from the Perl version.
<langsyntaxhighlight lang="julia">const regex = r"""^ (.*?) \s+
(
\d* (\-|\/)? \d*
Line 837:
end
end
</langsyntaxhighlight>{{out}}
<pre>
Plataanstraat 5 split as street => Plataanstraat, number => 5
Line 875:
 
=={{header|Kotlin}}==
<langsyntaxhighlight lang="scala">// version 1.0.6
 
val r = Regex("""\s+""")
Line 939:
println("${street.padEnd(22)} ${if (house != "") house else "(none)"}")
}
}</langsyntaxhighlight>
 
{{out}}
Line 982:
=={{header|Nim}}==
{{trans|Go}}
<langsyntaxhighlight Nimlang="nim">import strutils except align
from unicode import align
 
Line 1,037:
for address in Addresses:
let (street, house) = address.separateHouseNumber()
echo street.align(22), " ", if house.len != 0: house else: "(none)"</langsyntaxhighlight>
 
{{out}}
Line 1,077:
 
=={{header|Perl}}==
<langsyntaxhighlight lang="perl">@addresses = (
'Plataanstraat 5', 'Straat 12', 'Straat 12 II', 'Dr. J. Straat 12',
'Dr. J. Straat 12 a', 'Dr. J. Straat 12-14', 'Laan 1940 – 1945 37', 'Plein 1940 2',
Line 1,097:
$]x;
$number ? printf "%-26s\t%s\n", ($street, $number) : ($_, "\t(no match)");
}</langsyntaxhighlight>
{{out}}
<pre style="height:35ex">Plataanstraat 5
Line 1,135:
=={{header|Phix}}==
{{trans|Go}}
<!--<langsyntaxhighlight Phixlang="phix">(phixonline)-->
<span style="color: #008080;">with</span> <span style="color: #008080;">javascript_semantics</span>
<span style="color: #008080;">function</span> <span style="color: #000000;">isDigit</span><span style="color: #0000FF;">(</span><span style="color: #004080;">integer</span> <span style="color: #000000;">ch</span><span style="color: #0000FF;">)</span>
Line 1,211:
<span style="color: #008080;">end</span> <span style="color: #008080;">procedure</span>
<span style="color: #000000;">main</span><span style="color: #0000FF;">()</span>
<!--</langsyntaxhighlight>-->
{{out}}
<pre>
Line 1,253:
=={{header|Python}}==
<!-- ?? missing code ?? -->
<langsyntaxhighlight lang="python">
Plataanstraat 5 split as (Plataanstraat, 5)
Straat 12 split as (Straat, 12)
Line 1,286:
Marktplatz 31 split as (Marktplatz, 31)
Schmidener Weg 3 split as (Schmidener Weg, 3)
Karl-Weysser-Str. 6 split as (Karl-Weysser-Str., 6)''')</langsyntaxhighlight>
 
=={{header|Racket}}==
Line 1,292:
Same as other regexp-splittings on this page. (I don't see much point in this, but the related [[Starting_a_web_browser]] seems like a good idea.)
 
<langsyntaxhighlight lang="racket">
#lang racket
 
Line 1,344:
(cond [(splits-adressen str) => cdr]
[else '???])))
</syntaxhighlight>
</lang>
 
{{out}}
Line 1,393:
in places such as the U.S. where each block gets a hundred house numbers
to play with, and there are cities with hundreds of blocks along a street.)
<syntaxhighlight lang="raku" perl6line>say m[
( .*? )
 
Line 1,405:
 
$
] for lines;</langsyntaxhighlight>
{{out}}
<pre>「Plataanstraat 5」
Line 1,541:
 
=={{header|REXX}}==
<langsyntaxhighlight lang="rexx">/*REXX program splits an European mail address into an address and a house number. */
!= '│' /*a pipe-ish symbol for $ concatenation*/
$= "Plataanstraat 5" ! ,
Line 1,597:
(datatype(e, 'N') & pl & \verify("'", p, "M")) then s=s-1
if s==0 then s=n /*if no split, then relocate split to ∞*/
return s /* [↑] indicate where to split the txt*/</langsyntaxhighlight>
{{out|output|text=&nbsp; when using the default (internal) input:}}
<pre>
Line 1,636:
 
=={{header|Scala}}==
<langsyntaxhighlight Scalalang="scala">object SplitHouseNumber extends App {
val extractor = new scala.util.matching.Regex( """(\s\d+[-/]\d+)|(\s(?!1940|1945)\d+[a-zI. /]*\d*)$|\d+\['][40|45]$""")
 
Line 1,679:
 
adressen.foreach(s => println(f"$s%-25s split as ${splitsAdressen(s)}"))
}</langsyntaxhighlight>
{{out}}
<pre>Plataanstraat 5 split as (Plataanstraat, 5)
Line 1,717:
=={{header|Sidef}}==
{{trans|Raku}}
<langsyntaxhighlight lang="ruby">var re = %r[
( .*? )
(?:
Line 1,736:
warn "Can't parse: «#{line}»"
}
}</langsyntaxhighlight>
{{out}}
<pre>
Line 1,776:
=={{header|Tcl}}==
{{trans|Scala}}
<langsyntaxhighlight lang="tcl">proc split_DE_NL_address {streetAddress} {
set RE {(?x)
^ (.*?) (
Line 1,829:
lassign [split_DE_NL_address $streetAddress] str num
puts "split <$streetAddress> as <$str> <$num>"
}</langsyntaxhighlight>
{{out}}
<pre>
Line 1,868:
 
=={{header|TUSCRIPT}}==
<langsyntaxhighlight lang="tuscript">
$$ MODE DATA
 
Line 1,919:
 
TRACE *output
</syntaxhighlight>
</lang>
Output:
<pre style='height:30ex;overflow:scroll'>
Line 1,963:
{{libheader|Wren-pattern}}
{{libheader|Wren-fmt}}
<langsyntaxhighlight lang="ecmascript">import "/pattern" for Pattern
import "/fmt" for Fmt
 
Line 2,034:
if (house == "") house = "(none)"
Fmt.print("$-22s $s", street, house)
}</langsyntaxhighlight>
 
{{out}}
10,333

edits