Split string in two strings

4 ビュー (過去 30 日間)
Dion Theunissen
Dion Theunissen 2022 年 8 月 10 日
コメント済み: Stephen23 2022 年 8 月 10 日
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 件のコメント
Walter Roberson
Walter Roberson 2022 年 8 月 10 日
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 2022 年 8 月 10 日
"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.

サインインしてコメントする。

回答 (1 件)

Stephen23
Stephen23 2022 年 8 月 10 日
編集済み: Stephen23 2022 年 8 月 10 日
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 件のコメント
Walter Roberson
Walter Roberson 2022 年 8 月 10 日
(.*)\s+(\S+)
What do you want to do if there are spaces after the last word?
Stephen23
Stephen23 2022 年 8 月 10 日
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"

サインインしてコメントする。

カテゴリ

Help Center および File ExchangeVideo games についてさらに検索

製品


リリース

R2022a

Community Treasure Hunt

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

Start Hunting!

Translated by