我正在开发一个带有数据库的程序,该程序可以翻译“已知”字符串。
例如,如果我有"the car is blue“,它会在数据库中查找该字符串,如果字符串存储在数据库中,则获取相应的翻译并将其粘贴到数据库中。
到目前为止,一切都运行良好。
问题是,很多时候我有一个句子,比如“公园里有3辆蓝色的车”,但我的数据库中存储了“公园里有2辆蓝色的车”这句话。
我需要的是程序在数据库中查找相同但数字不同的字符串。(Sqlite数据库)
到目前为止,它应该不会太难。它将返回翻译后的文本,但带有错误的数字。现在,我需要将文本中的数字替换为coorect数字。这也不会太难。但问题是,一个句子可能有多个数字,而且在翻译文本中,数字的顺序是不同的。
例如,“公园里有3辆车有2个座位”这句话一旦翻译过来就可以变成“公园里有3辆车有2个座位”(显然是用正确的语言)。
数字已经切换,我需要在生成新的翻译时考虑到这一点。这个最后的部分如何解决呢?
谢谢
编辑:
我有一个想法,但我不确定它是否有效:
我有我的原始字符串“公园里有3辆车,有2个座位”
我搜索没有数字的字符串,得到一个数字错误的字符串。
例如:“公园里有4辆车,有5个座位。”
我比较了这两个句子,知道每一个"3“被一个"4”代替,每2个被一个"5“代替。
我在返回的翻译文本上运行字符串替换,并替换所有数字...
但是当我在写的时候,我注意到一个问题:如果我有一个句子"there is 3 car int he park with 2 seats“,而从数据库返回的句子是"there the 5 car in the park with 5 seats”,那么它就不会起作用,因为结果将是"there is 3 car in the park with 3 seats"..你对如何克服最后这一部分有什么想法吗?
发布于 2014-04-04 22:20:30
您可能希望使用string.Format并在数据库中将字符串存储为:There are {0} cars with {1} seats
这将在代码中变为:string.Format("There are {0} cars with {1} seats", amountOfCars, amountOfSeats);
当然,这使得翻译人员和维护人员的事情变得更加复杂(“{0}是座位的数量吗?还是汽车的数量?嗯……”)因此,您可以使用简单的替换:
"There are {#cars} cars with {#seats} seats"
.Replace("{#cars}", amountOfCars)
.Replace("{#seats}", amountOfSeats);如果这会让事情变得太复杂,也许你需要研究一些模板引擎/库。
发布于 2014-04-04 22:22:33
基于正则表达式和引用的组构建,例如正则表达式:
there are (\d+) cars with (\d+) seats in the park可以替换为(这是波兰语):
Na parkingu jest $2 miejsc w $1 samochodach.然后简单地使用Regex.Replace方法:
Dim pattern As String = "there are (\d+) cars with (\d+) seats in the park"
Dim replacement As String = "Na parkingu jest $2 miejsc w $1 samochodach."
Dim rgx As New Regex(pattern)
Dim result As String = rgx.Replace(input, replacement)注意:您可以通过使用命名组使这些模式更具可读性:
there are (?<Cars>\d+) cars with (?<Seats>\d+) seats in the park
Na parkingu jest ${Seats} miejsc w ${Cars} samochodach.https://stackoverflow.com/questions/22865282
复制相似问题