2016-11-02 3 views
-2

Быстрое программирование;быстрое программирование: string.components (separateBy: ",")

У меня есть массив строк, что я разделен на строки пары вида

var eachpair: [String] = [string1,string2] 

потом разделить каждую пару на одну строку и преобразовать каждую строку в поплавок. Я использую следующую технику, но для ее разделения требуется огромное количество времени. Для Java это занимает гораздо меньше времени. Есть ли способ ускорить этот процесс?

var var1: Float = Float((eachpair.components(separatedBy: ","))[0]) 
var var2: Float = Float((eachpair.components(separatedBy: ","))[1]) 

Я ценю всю помощь. Благодарю.

+0

Можете ли вы объяснить, что вы пытаетесь сделать немного лучше, с примерами строк? Не похоже, что вы используете массивы в лучшей ситуации. – TheValyreanGroup

+1

Непонятно, что именно вы пытаетесь достичь здесь - вы не можете вызывать 'components (seperatedBy:)' на '[String]'. – Hamish

+0

@TheValyreanGroup Я использую XMLparser и получаю координаты как ["String"]. Но координаты содержат несколько (X, Y) пар, разделенных пробелом. Например, ["1.0.2.3 4.2.2.3 2.9.5.1]. Мне нужно разбить это так, чтобы я мог преобразовать каждый элемент в float. Но для этого требуется много времени, если вы используете split в цикле. для некоторых других методов Итак, первый раскол состоит в том, чтобы сделать каждый набор пару строк. Это не проблема одной команды. Но когда я хочу снова разбить каждую пару запятой, я должен использовать цикл, поскольку есть несколько пар строк – pdrersin

ответ

0

Я не уверен, как на самом деле может быть «медленным». При работе с массивами петля очень распространена и тривиальна. Я не понимаю, почему выполнение следующего может повлиять на производительность, если ваш начальный массив не является чрезвычайно большим (500+).

let coords: [String] = ["10.25,23.42","76.21,30.82","71.33,66.34"] 
var floatCoords: [Float]! 

for pairs in coords { 
     let temp = Float(pairs.components(seperatedBy: ",") 
     floatCoords.append(contentsOf: temp) 
} 
+0

В этом ответе есть серьезные проблемы с 'let temp = ...'. 1) Он не будет компилироваться. 2) 'String components (separateBy:' возвращает '[String]'. создайте 'Float' из' [String] '. – rmaddy

+0

@rmaddy Я сделал это из приложения, и я все еще не рядом с моей машиной, поэтому я шел из памяти, но теперь, когда я смотрю, что вы правы Я исправлю это позже сегодня вечером. Но идея состояла в том, чтобы просто указать ему правильное направление и ответить на его проблемы с проблемами. – TheValyreanGroup

+1

Я думаю, что самое большое выступление i ssue - это то, что OP бесполезно вызывает 'компоненты (разделенныеBy:' на каждое значение 'eachpair' дважды вместо одного. – rmaddy

Смежные вопросы