我已经构建了一个小的asp.net表单,可以搜索某些内容并显示结果.我想在搜索结果中突出显示搜索字符串.例:
Query: "p"
Results: a<b>p</b>ple, banana, <b>p</b>lum
Run Code Online (Sandbox Code Playgroud)
我的代码是这样的:
public static string HighlightSubstring(string text, string substring)
{
var index = text.IndexOf(substring, StringComparison.CurrentCultureIgnoreCase);
if(index == -1) return HttpUtility.HtmlEncode(text);
string p0, p1, p2;
text.SplitAt(index, index + substring.Length, out p0, out p1, out p2);
return HttpUtility.HtmlEncode(p0) + "<b>" + HttpUtility.HtmlEncode(p1) + "</b>" + HttpUtility.HtmlEncode(p2);
}
Run Code Online (Sandbox Code Playgroud)
我主要是工作,但尝试用例如HighlightSubstring("ß", "ss").这崩溃是因为在德国,"ß"和"ss"被认为是相同的IndexOf方法,但它们有不同的长度!
现在,如果有办法找出"文本"中的匹配有多长,那就没关系了.请记住,这个长度可以!= substring.Length.
那么如何找出IndexOf在存在连字和外来语言字符时出现的匹配长度(在这种情况下是连字)?
如果我有国家/语言组合的文化代码,是否可以从中找到文本方向.
例如,对于en-US,我如何从中得到文本方向从左到右?从ar-EG开始,我怎么知道文本方向是从右到左?
除了英国文化,我还有一些文字.例如:泰米尔文化.
如果我不提及文化,将采用默认英语.
如何将文本转换为语音(英语除外)?
代码段:
对于英语:
public static void ConvertTextToVoice()
{
SpeechSynthesizer speech = new SpeechSynthesizer();
speech.Volume = 100;
speech.Rate = 0;
speech.Speak("Welcome to india");
}
Run Code Online (Sandbox Code Playgroud)
对于其他语言:
public static void ConvertTextToVoice()
{
SpeechSynthesizer speech = new SpeechSynthesizer();
speech.Volume = 100;
speech.Rate = 0;
//Tamil Text
string text = "??????? ???? ??????? ????? ???????? ?????? ???? ???? ???";
PromptBuilder builder = new PromptBuilder(new System.Globalization.CultureInfo("ta-IN"));
builder.AppendText(text);
speech.SpeakAsync(builder);
}
Run Code Online (Sandbox Code Playgroud) 我知道如何强制数字,文本等。但是如果我的数据库字段只能接受英语字符,我是否有标志或IME选项可以强迫EditText只接受某些语言,例如英语?当然我可以检查输入错误并通知用户,但这并不完全是用户友好的...
也可以在EditText上实现我自己的过滤器,但是我不确定这是否会迫使键盘布局本身使用我需要的语言。
任何的想法 ?
这应该很简单,也许是,但是我似乎找不到这个问题的答案...
我正在使用Visual Studio 2008开发C#应用程序,并且该应用程序支持多种不同的语言。在开发机上测试不同的语言很简单(例如,临时添加Thread.CurrentThread.CurrentUICulture = new CultureInfo("sv")到应用程序中将让我测试瑞典语翻译),但是如何在不使用代码的情况下在测试机上更改语言环境/文化?我想使用以下步骤进行测试:
我正在尝试在具有多个项目和线程的解决方案中支持多种语言.
我有2个资源文件,一个用英文字符串,一个用法文字符串.
我将当前的文化设置如下:
Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo(isEnglish ? "en-US" : "fr-CA");
Run Code Online (Sandbox Code Playgroud)
有没有办法在全局范围内为整个解决方案设置当前文化,或者我是否必须为需要访问字符串的每个线程执行此操作?
我有一个写下这样日期的网站:
CultureInfo cultureInfo = CultureInfo.GetCultures(CultureTypes.AllCultures).FirstOrDefault(c => string.Equals(c.TwoLetterISOLanguageName, MvcApplication.Language));
return string.Concat(date.Day, ".", cultureInfo.DateTimeFormat.GetAbbreviatedMonthName(date.Month));
Run Code Online (Sandbox Code Playgroud)
在这两个我的电脑(Windows 7的Service Pack 1起,西班牙文化)和服务器(Windows Server 2012中,英文化)的MvcApplication.Language是es让我从列表中得到文化是:es-ES.
我希望他们都写相同的字符串(他们有不同的文化,但我没有使用CurrentCulture).但结果是abr在我的电脑和Abr.服务器中.
我试过这个与MvcApplication.Language使用LinqPAD隔离但它仍然不同.我已经打印了各种计算机的数组,AbbreviatedDayNames并且AbbreviatedMonthNames它们各不相同.
我做错了什么或这是预期的行为?如何使其完全独立于Windows /用户文化?
我在MVC中使用DateTime变量,我想显示波斯日历
@Html.EditorFor(x=> x.ProductionDate)
Run Code Online (Sandbox Code Playgroud)
我该怎么做?
我有一个有趣的情况,其中语言环境设置与我的C#应用程序混乱,因为我没有意识到像Double.Parse这样的方法不会将"1000"转换为1000,而是由于编号格式不同而做了一些意外的事情.
我的问题的一个解决方案是使用类似的东西double d = double.parse( "1000", new CultureInfo("en-US"));.目前,我没有通过CultureInfo.但是,我不想在整个代码中进行此更改,而是想知道在启动时是否可能影响我的应用程序的区域设置.
我在MSDN上发现了一篇文章说我可以使用以下代码实现这一目的:
using System.Threading;
using System.Globalization;
Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US");
Thread.CurrentThread.CurrentUICulture = new CultureInfo("en-US");
Run Code Online (Sandbox Code Playgroud)
但它没有说明从主线程产生的工作线程是否也会继承父文化.
我认为情况并非如此,因为在.NET 4.5中显然有一个新 CultureInfo.DefaultThreadCurrentCulture属性为app域中的所有线程指定了文化,但在.NET 4.0中没有这样的东西.
有人可以为这个区域设置问题推荐一个很好的解决方案
编辑:你能更仔细地阅读我的问题吗?这个问题具体而且没有重复,如前所述.显然我在发帖前看过这个问题.
在这个来自文档的演示代码中,lang参数之后的片段将是静态的.所以,用英语/en/about,例如葡萄牙语/pt/about.好吧,应该是正确的/pt/sobre.
有关使用URL处理器的正确方法的任何想法?
from flask import Flask, g
app = Flask(__name__)
@app.url_defaults
def add_language_code(endpoint, values):
if 'lang_code' in values or not g.lang_code:
return
if app.url_map.is_endpoint_expecting(endpoint, 'lang_code'):
values['lang_code'] = g.lang_code
@app.url_value_preprocessor
def pull_lang_code(endpoint, values):
g.lang_code = values.pop('lang_code', None)
@app.route('/<lang_code>/')
def index():
...
@app.route('/<lang_code>/about')
def about():
Run Code Online (Sandbox Code Playgroud) culture ×10
c# ×5
cultureinfo ×3
asp.net-mvc ×2
locale ×2
.net ×1
.net-4.0 ×1
android ×1
calendar ×1
encoding ×1
flask ×1
hebrew ×1
javascript ×1
keyboard ×1
localization ×1
multilingual ×1
persian ×1
python ×1
windows ×1