Объедините их в одну строку (или оставьте так, если они так начали), затем разбейте ее на and
и снова разбейте каждую подстроку:
var words = new[] { "visit", "houston", "and", "san", "antonio", "and", "austin", "and", "corpus", "christi" };
var sentence = string.Join(' ', words); // "visit houston and san .... christi"
var cities = sentence.Split("and", StringSplitOptions.None)
.Select(x => x.Split(' ', StringSplitOptions.RemoveEmptyEntries))
.ToArray();
Обратите внимание, что если ваш ввод включает в себя пробелы (например, ..., "and", "san antonio", ...
), то это может потребовать некоторой корректировки.
Разве это не зависит, как Вы на самом деле реализуете наследование в своей системе?
Например, в версии JavaScript того, что Вы описываете, prototype
для AwesomeDragonImmuneToFire
обычно был бы экземпляр AwesomeDragon
, и так как Вы всегда работали бы с экземплярами, не будет иметь значения, что Вы делаете к какому-то конкретному AwesomeDragon
:
function Dragon()
{
this.position = "starting point";
}
function AwesomeDragon()
{
this.awesome = true;
}
AwesomeDragon.prototype = new Dragon();
function AwesomeDragonImmuneToFire()
{
this.immuneToFire = true;
}
AwesomeDragonImmuneToFire.prototype = new AwesomeDragon();
>>> var awesome = new AwesomeDragon();
>>> var immune = new AwesomeDragonImmuneToFire();
>>> awesome.position = "flying above village";
>>> immune.position;
"starting point"
>>> immune.awesome
true
В этом примере нет никаких классов, и все экземпляры являются просто экземплярами Object
которые, оказывается, знают, какая функция использовалась для построения их. new
просто немного синтаксического сахара и использования, StudlyCaps для функций конструктора является просто конвенцией для функций, которые предназначаются, чтобы использоваться с new
.
Ключевая вещь состоит в том, что каждый объект имеет цепочку объектов прототипа, которая исследована, при попытке получить доступ к атрибуту, который сам объект не содержит согласно описанию Yegge того, каков "Шаблон Свойств".
https://developer.mozilla.org/en/Core_JavaScript_1.5_Guide/Details_of_the_Object_Model
Это включит обновление свойства 'положения' AwesomeDragon. Однако момент, я делаю этот AwesomeDragonImmuneToFire, взлетит также.
Возможно, я неправильно понимаю, но я не уверен, почему Вы думаете, что AwesomeDragonImmuneToFire взлетит также. Если они будут двумя отдельными объектами, и положение является свойством объектов затем, то каждый экземпляр (дракон) будет иметь их собственное положение. Менять положение одного дракона не должно влиять на положение другого.