首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >搜索相似字符串并生成翻译

搜索相似字符串并生成翻译
EN

Stack Overflow用户
提问于 2014-04-04 22:15:44
回答 2查看 39关注 0票数 0

我正在开发一个带有数据库的程序,该程序可以翻译“已知”字符串。

例如,如果我有"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"..你对如何克服最后这一部分有什么想法吗?

EN

回答 2

Stack Overflow用户

发布于 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}是座位的数量吗?还是汽车的数量?嗯……”)因此,您可以使用简单的替换:

代码语言:javascript
复制
"There are {#cars} cars with {#seats} seats"
    .Replace("{#cars}", amountOfCars)      
    .Replace("{#seats}", amountOfSeats);

如果这会让事情变得太复杂,也许你需要研究一些模板引擎/库。

票数 0
EN

Stack Overflow用户

发布于 2014-04-04 22:22:33

基于正则表达式和引用的组构建,例如正则表达式:

代码语言:javascript
复制
there are (\d+) cars with (\d+) seats in the park

可以替换为(这是波兰语):

代码语言:javascript
复制
Na parkingu jest $2 miejsc w $1 samochodach.

然后简单地使用Regex.Replace方法:

代码语言:javascript
复制
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)

注意:您可以通过使用命名组使这些模式更具可读性:

代码语言:javascript
复制
there are (?<Cars>\d+) cars with (?<Seats>\d+) seats in the park
Na parkingu jest ${Seats} miejsc w ${Cars} samochodach.
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22865282

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档