【问题标题】:Split a string on sqlite在 sqlite 上拆分字符串
【发布时间】:2013-10-19 15:35:49
【问题描述】:

我不知道 sqlite,但我必须实现一个已经完成的数据库。我正在使用 Corona SDK 进行编程。问题:我有一个名为“答案”的列,格式为:House,40|Bed,20|Mirror,10 ecc。 我想像这样拆分字符串并删除"," "|":

VARIABLE A=House

VARIABLE A1=40


VARIABLE B=Bed

VARIABLE B1=20

VARIABLE C=Mirror

VARIABLE C1=10

对不起我的英语。谢谢大家。

【问题讨论】:

  • 您可以获取每一行的值并使用 java 中的 split 函数对其进行拆分。
  • Corona SDK 基于 Lua 语言
  • 哦,好的,谢谢您的信息。我没有意识到这一点,我认为 corona sdk 可以成为 android 的一部分,所以它支持 java :).. 谢谢..
  • 不客气 :) 那么,您还有其他想法吗?
  • 不,没有其他选择,我相信sqlite没有提供这样的功能,你必须用lua语言本身来处理它。 Sql 也没有提供这个,虽然有一个 substr 和一个 concate 函数

标签: string sqlite coronasdk


【解决方案1】:

试试这个:

如果你想简单地删除字符,那么你可以使用以下:

更新 3:

local myString = "House;home;flat,40|Bed;bunk,20|Mirror,10"
local myTable = {}
local tempTable = {}

local count_1 = 0
for word in string.gmatch(myString, "([^,|]+)") do
    myTable[#myTable+1]=word
    count_1=count_1+1
    tempTable[count_1] = {} -- Multi Dimensional Array
    local count_2 = 0
    for word_ in string.gmatch(myTable[#myTable], "([^,|,;]+)") do
        count_2=count_2+1
        local str_ = word_
        tempTable[count_1][count_2] = str_
        --print(count_1.."|"..count_2.."|"..str_)
    end
end

print("------------------------")
local myTable = {} -- Resetting my table, just for using it again :)
for i=1,count_1 do
    for j=1,#tempTable[i] do
        print("tempTable["..i.."]["..j.."] = "..tempTable[i][j])
        if(j==1)then myTable[i] = tempTable[i][j] end
    end
end

print("------------------------")
for i=1,#myTable do
    print("myTable["..i.."] = "..myTable[i])
end
--[[ So now you will have a multidimensional array tempTable with
     elements as:
        tempTable = {{House,home,flat},
                     {40},
                     {Bed,bunk},
                     {20},
                     {Mirror},
                     {10}}

     So you can simply take any random/desired value from each.
     I am taking any of the 3 from the string "House,home,flat" and
     assigning it to var1 below:
--]]

var1 = tempTable[1][math.random(3)]
print("var1 ="..var1)

-- So, as per your need, you can check var1 as: 
for i=1,#tempTable[1] do  -- #tempTable[1] means the count of array 'tempTable[1]'
  if(var1==tempTable[1][i])then
    print("Ok")
    break;
  end
end

----------------------------------------------------------------
   -- Here you can print myTable(if needed) --
----------------------------------------------------------------
for i=1,#myTable do
  print("myTable["..i.."]="..myTable[i])
end

--[[ The output is as follows:
    myTable[1]=House
    myTable[2]=40
    myTable[3]=Bed
    myTable[4]=20
    myTable[5]=Mirror
    myTable[6]=10

    Is it is what you are looking for..?
 ]]--

 ----------------------------------------------------------------

继续编码...... :)

【讨论】:

  • 如果我想在某些特定变量中插入单词?例如:varA=House, varA1=40, varB=Bed ecc?我拥有的最大变量数是单词七个,数字七个(现有变量)。
  • @Nick21Android:您可以将其分配为:varA=myTable[1]; varA1=myTable[2];等等……
  • 是的,很简单,对不起!!我问你最后一个问题:有时我有同义词,例如 House;home,40|Bed,20|Mirror,10(用“;”分隔)但并非总是如此,所以我无法指定确切的项目数量一个特定的变量。例如在这种情况下 myTable[2] 是“家”,而不是一个数字。你有什么想法吗?变量必须只打印第一个单词(House),但我需要记住第二个或第三个(ecc)单词,在这种情况下是“home”对不起我的英语
  • 哇,效果很好!这对我来说仍然很困难:)现在我应该可以设置所有了,非常感谢!我问你另一件小事(原谅我):我怎样才能将表格项与文本连接起来?例如 bt.text = (myTable[2]**here i want to add "%"**) With .. 不起作用
  • 串联将起作用。我也将它包含在上面更新的代码中..... :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-08-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多