Split string in two strings

3 Ansichten (letzte 30 Tage)
Dion Theunissen
Dion Theunissen am 10 Aug. 2022
Kommentiert: Stephen23 am 10 Aug. 2022
I have the following string, now I want to splits it up in 2 different strings like show in below:
STR = ["van Donk","Gerritsen","kooijman","Verliefde","Floré","Pengel","aan de Wiel","van der Hoeven","Hop","Boer","van Ewijk"]
What i want to create is
STR1 = ["van","","","","","","aan de","van der","","","van"]
STR2 = ["Donk","Gerritsen","kooijman","Verliefde","Floré","Pengel","Wiel","Hoeven","Hop","Boer","Ewijk"]
Anyone who can help me?
  2 Kommentare
Walter Roberson
Walter Roberson am 10 Aug. 2022
Ummm... why? "van der Hoeven" is a complete surname. The surname is not "Hoeven" with "van der" being some kind of middle name. "van der Hoeven" should be sorted under v or V, not under H
Stephen23
Stephen23 am 10 Aug. 2022
"The surname is not "Hoeven" with "van der" being some kind of middle name."
The "van der" is not part of the main name, it is a tussenvoegsel:
which in Dutch is ignored when sorting, just like "von" and "zu" are ignored in German.
""van der Hoeven" should be sorted under v or V, not under H"
There are differing opinions on this:
So the required sort order depends mostly on where your users are from.

Melden Sie sich an, um zu kommentieren.

Antworten (1)

Stephen23
Stephen23 am 10 Aug. 2022
Bearbeitet: Stephen23 am 10 Aug. 2022
str = ["van Donk","Gerritsen","kooijman","Verliefde","Floré","Pengel","aan de Wiel","van der Hoeven","Hop","Boer","van Ewijk"]
str = 1×11 string array
"van Donk" "Gerritsen" "kooijman" "Verliefde" "Floré" "Pengel" "aan de Wiel" "van der Hoeven" "Hop" "Boer" "van Ewijk"
tkn = regexp(str,'^(\w+\s+)*(\w+)$','tokens','once');
tkn = vertcat(tkn{:});
st1 = strtrim(tkn(:,1))
st1 = 11×1 string array
"van" "" "" "" "" "" "aan de" "van der" "" "" "van"
st2 = tkn(:,2)
st2 = 11×1 string array
"Donk" "Gerritsen" "kooijman" "Verliefde" "Floré" "Pengel" "Wiel" "Hoeven" "Hop" "Boer" "Ewijk"
  3 Kommentare
Walter Roberson
Walter Roberson am 10 Aug. 2022
(.*)\s+(\S+)
What do you want to do if there are spaces after the last word?
Stephen23
Stephen23 am 10 Aug. 2022
str = ["van Donk","Gerritsen","kooijman","Verliefde","Floré","Pengel","aan de Wiel","van der Hoeven","Hop","Boer","van Ewijk","in 't veld"];
tkn = regexp(str,'^(.*?)\s*(\S+)$','tokens','once');
tkn = vertcat(tkn{:})
tkn = 12×2 string array
"van" "Donk" "" "Gerritsen" "" "kooijman" "" "Verliefde" "" "Floré" "" "Pengel" "aan de" "Wiel" "van der" "Hoeven" "" "Hop" "" "Boer" "van" "Ewijk" "in 't" "veld"

Melden Sie sich an, um zu kommentieren.

Kategorien

Mehr zu Characters and Strings finden Sie in Help Center und File Exchange

Produkte


Version

R2022a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by