小编Paw*_*yda的帖子

如何将多个谓词应用于java.util.Stream?

如何将多个谓词应用于java.util.Stream's filter()方法?

这就是我现在所做的,但我并不喜欢它.我有一些Collection东西,我需要根据Collection过滤器(谓词)减少事物的数量:

Collection<Thing> things = someGenerator.someMethod();
List<Thing> filtered = things.parallelStream().filter(p -> {
   for (Filter f : filtersCollection) {
      if (f.test(p))
        return true;
   }
   return false;
}).collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)

我知道如果我事先了解过滤器的数量,我可以这样做:

List<Thing> filtered = things.parallelStream().filter(filter1).or(filter2).or(filter3)).collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)

但是如何在不混合编程风格的情况下应用未知数量的谓词?知道它看起来有点难看......

java lambda predicate java-8 java-stream

50
推荐指数
4
解决办法
5万
查看次数

如何获取本地化的日期模式字符串?

使用DateFormat的实例格式化和解析Java Date(或Calendar)类非常容易,即我可以将当​​前日期格式化为短的本地化日期,如下所示:

DateFormat formatter = DateFormat.getDateInstance(DateFormat.SHORT, Locale.getDefault());
String today = formatter.format(new Date());
Run Code Online (Sandbox Code Playgroud)

我的问题是:我需要获得这个本地化的模式字符串(即类似的东西"MM/dd/yy").这应该是一项微不足道的任务,但我找不到提供者......

java datetime localization internationalization

45
推荐指数
7
解决办法
8万
查看次数

App_LocalResources如何与MVC一起使用?

我一直在研究我的第一个MVC应用程序,我想将它本地化.我知道如何使用App_GlobalResources,但我更喜欢使用App_LocalResources.

在典型的WebForms应用程序中,您将App_LocalResources文件夹放在与ASPX文件相同的目录中...这在MVC中是相同的(IE:我将它们放在"views"目录中的相应子文件夹中)吗?

此外,在视图中访问App_GlobalResources时,您可以这样做,<%=Html.Encode(Resources.Index.Title)%>但是我无法使用App_LocalResources执行此操作.我不想让我<label runat="server"为了利用这个meta:resourcekey


编辑:

我发现了一种方法来做到这一点,但我不确定这是否是最好的方法.这是个主意

  1. 您将该App_LocalResources文件夹作为子文件夹放在相应的View文件夹中
  2. 您创建与您的视图对应的resx文件... IE:Index.resxAbout.resx
  3. 您将Resx文件属性设置为"Public"(PublicResXFileCodeGenerator),"Embeded Resource","Views.[viewname]"namespace
  4. 创建一个名为"Title"的新资源名称,并在Value中放入您想要的任何内容.

现在我可以使用类似的东西来引用本地资源

<%= MyProj.Views.Home.Index.Title%>

我看到的唯一问题是资源是嵌入的,我无法在不重新编译项目的情况下添加新的语言环境.

这是我对这种方法的参考.

.net asp.net-mvc localization internationalization

24
推荐指数
1
解决办法
1万
查看次数

如何在messages.properties文件中使用命名参数?

有没有办法让message.properties记录如下

message.myMessage=This message is for ${name} in ${location}
Run Code Online (Sandbox Code Playgroud)

而不是

message.myMessage = This message is for {0} in {1}
Run Code Online (Sandbox Code Playgroud)

当我创建消息时,我不一定知道顺序/需要多少参数,但我只能按名称传递几个属性,并且只使用正确的属性.

java spring internationalization

20
推荐指数
5
解决办法
2万
查看次数

我在哪里可以找到一组特定的整理规则来进行字符串的相等比较?

我们都知道使用String的equals()方法进行相等比较会失败.相反,应该使用Collat​​or,如下所示:

// we need to detect User Interface locale somehow
Locale uiLocale = Locale.forLanguageTag("da-DK");
// Setting up collator object
Collator collator = Collator.getInstance(uiLocale);
collator.setStrength(Collator.SECONDARY);
collator.setDecomposition(Collator.CANONICAL_DECOMPOSITION);
// strings for equality testing
String test1 = "USA lover Grækenland støtte";
String test2 = "USA lover graekenland støtte";
boolean result = collator.equals(test1, test2);
Run Code Online (Sandbox Code Playgroud)

现在,这段代码有效,除非 uiLocale设置为丹麦语,否则结果为真.在这种情况下,它会产生错误.我当然明白为什么会发生这种情况:这只是因为方法equals是这样实现的:

return compare(s1, s2) == Collator.Equal;
Run Code Online (Sandbox Code Playgroud)

此方法调用用于排序的方法并检查字符串是否相同.它们不是,因为丹麦特定的整理规则要求æ后排序(如果我正确理解比较方法的结果)ae.但是,这些字符串实际上是相同的,具有这种强度的情况差异和这样的兼容性字符(这就是它所谓的)应该被视为相等.

要解决这个问题,可以使用RuleBasedCollat​​or和一组适用于相等情况的特定规则.
最后问题是:有没有人知道我在哪里可以得到这样的特定规则(不仅对丹麦语而且对其他语言也是如此),因此兼容性字符,连字等被视为相等(CLDR 图表似乎不包含这样或者我找不到它)?

或者也许我想在这里做一些愚蠢的事情,我应该使用简单的UCA进行相等比较(请问任何代码示例)?

java localization collation internationalization icu

15
推荐指数
1
解决办法
2376
查看次数

使用+来连接字符串总是一个坏主意

我的代码如下:

String s = "";
for (My my : myList) {
    s += my.getX();
}
Run Code Online (Sandbox Code Playgroud)

当我这样做时,Findbugs总是会报错.

java string coding-style internationalization

14
推荐指数
2
解决办法
6510
查看次数

使用.NET中的CultureInfo访问资源字符串

另一个简单问题.我有不同语言的网站.如果我想从资源文件中访问一个字符串,我会像这样使用它

Resources.MyResourceFile.MyStringIdentifier
Run Code Online (Sandbox Code Playgroud)

很容易.这样我在编译期间就知道资源字符串存在.

现在,只有当我想使用当前的文化时,这才有效.有时我需要指定一种特定的文化(假设当前用户使用德语作为语言,但他的操作会触发将消息发送给其他用户,这些用户将使用收件人的语言).现在,我看到两个选择:

Resources.MyResourceFile.ResourceManager.GetString("MyStringIdentifier", neededCulturInfo)
Run Code Online (Sandbox Code Playgroud)

另一个是改变当前线程的文化信息,我需要做几次.

还有第三种方式吗?在编译时告诉我资源存在但不需要一直改变线程文化的东西?

asp.net resources cultureinfo internationalization currentuiculture

10
推荐指数
1
解决办法
1825
查看次数

如何使C#显示阿拉伯语?

我有一个问题,在编写C#代码时,输​​出有时是单词阿拉伯语,它看起来像一个奇怪的符号,如何让C#读取并显示阿拉伯语?

c# fonts internationalization character-encoding

4
推荐指数
1
解决办法
5588
查看次数

在Android设备上运行时,FontMetrics不正确.模拟器很好

我有一个Android应用程序,根据Android设备的分辨率动态缩放文本.我已经在Android模拟器中的所有预定义分辨率上测试了此代码,我的代码运行正常.(这包括与HTC Desire和Motorola Droid相同的分辨率)

它也适用于我的HTC Wildfire.

以下是模拟器的一些屏幕截图:

在此输入图像描述 在此输入图像描述 在此输入图像描述

但是......我在HTC Desire上尝试了这个,我收到了使用Motorola Droid的用户报告,这些字体没有正确缩放:

在此输入图像描述

请注意它是如何切断文本的.

任何想法为什么这不适用于这些特定的设备?

我目前有一个函数可以根据文本的可用高度缩小文本...这样的事情:

public static float calculateHeight(FontMetrics fm) {

    return Math.abs(fm.ascent) + fm.descent;

}


public static int determineTextSize(Typeface font, float allowableHeight) {

    Paint p = new Paint();
    p.setTypeface(font);

    int size = (int) allowableHeight;
    p.setTextSize(size);

    float currentHeight = calculateHeight(p.getFontMetrics());

    while (size!=0 && (currentHeight) > allowableHeight) {
            p.setTextSize(size--);
        currentHeight = calculateHeight(p.getFontMetrics());
    }

    if (size==0) {
        System.out.print("Using Allowable Height!!");
        return (int) allowableHeight;
    }

    System.out.print("Using size " + size);
    return size;
}
Run Code Online (Sandbox Code Playgroud)

任何想法为什么只在几个设备上发生这种情况?以及如何解决它?还有其他字体指标,而不是我需要考虑的,我不知道吗?像Scale还是DPI?

谢谢.

java android fontmetrics

4
推荐指数
1
解决办法
3806
查看次数

ResourceBundle编辑器

我决定使用ResourceBundles为我的php应用程序提供翻译.虽然ResourceBundle(http://www.php.net/manual/en/class.resourcebundle.php)功能很新,但我更喜欢它在gettext上的工作方式.

我的问题是有没有好的ResourceBundle编辑器?特别是我正在寻找一个将扫描我的所有源文件并生成需要翻译和/或更新的消息ID列表.

以前,我使用POEdit为gettext生成翻译文件.它能够扫描我的源文件以获取_()等函数,并向我提供要翻译的消息ID列表.

我已经尝试安装一个eclipse插件(http://sourceforge.net/projects/eclipse-rbe/),虽然它有一个很好的GUI,但它不会扫描我的源文件来生成要翻译的消息ID列表.

任何人都可以推荐任何资源包编辑器吗?

php resourcebundle internationalization

4
推荐指数
1
解决办法
1866
查看次数

在c#中找出字符串日期的日期时间格式

我正在申请.该应用程序使用日期格式,如 "2012-11-21 15:22:35".
我已经知道格式了"yyyy-MM-dd HH:mm:ss".但是,如何以编程方式查找任意输入字符串的日期和时间格式?有没有办法做到这一点?

c# globalization datetime cultureinfo internationalization

3
推荐指数
3
解决办法
1万
查看次数