小编sp0*_*00m的帖子

Javascript - 用于在非转义字符上拆分字符串的正则表达式,例如| 但忽略\ |

我从文件中读取了一个字符串,我将其拆分为 字符.例如,字符串是

1|test pattern|prefix|url|postfix
Run Code Online (Sandbox Code Playgroud)

所以拆分必须总是给我5个子串,在上面的例子中

["1", "test pattern", "prefix", "url", "postfix"]
Run Code Online (Sandbox Code Playgroud)

当这五个子串中的任何一个包含|时出现问题 字符.我会把它存储为转义\ |

1|test pattern|prefix|url \| title |postfix
Run Code Online (Sandbox Code Playgroud)

现在,你可以看到string.split('|')不会给我想要的结果.期望的结果是

["1", "test pattern", "prefix", "url \| title ", "postfix"]
Run Code Online (Sandbox Code Playgroud)

我尝试了一些正则表达式,但这些都没有给出理想的结果.

string.split(/[^\\]\|/)  //["", "", "prefi", "$url \| $titl", " postfix"]
Run Code Online (Sandbox Code Playgroud)

看起来这只能用负面的回顾,但我无法让它工作

javascript regex

5
推荐指数
1
解决办法
1500
查看次数

拆分文本以每 n 个字符添加一个新行,以处理空格

为警报和确认对话框编写文本时的常见问题:在添加换行符之前要键入的字符数。一些浏览器会在某一时刻自动中断,而其他浏览器会在其他时候自动中断。所以你只能猜测了。有用的代码片段是一个 Javascript 函数,它将警报或确认对话框的预期文本和字符长度作为输入,然后返回相同的输入字符串,仅在最接近传入字符长度的空格的位置添加新行字符。这样,话没有中途分解。

示例:
1. 为要用于警报或确认对话框的文本字符串分配一个 var,例如:
var a = "我的狗有跳蚤,敏捷的棕色狐狸跳过懒惰的狗等";
2.通过函数运行文本,例如:
a = breakLines(a); // 默认,每 50 个字符中断一次

a = breakLines(a, 20); // 每隔 20 个字符

换行 通过函数运行后显示 'a' 的值,您将看到在离您指定的字符位置最近的空格字符处指定的每个位置都添加了换行符。例如,如果您指定 20,“a”将转换为以下内容:

'我的狗有跳蚤\n敏捷的棕色狐狸\n跳过懒惰的\n狗等'

对于字符串中的每一行(一行是以换行符结尾的字符串的一部分),该行的两边都被删掉了空格。下面的代码片段使用 jQuery $.trim() 函数来执行此操作,但还有其他方法可以在不使用 jQuery 库的情况下执行此操作,例如使用 regexp。只需根据您想使用的替代方法修改代码即可。

这引出了我的问题:除了按照如下所示的方式做我想做的事情之外,是否有更简单更紧凑的方式来做,例如可以利用正则表达式?有接班人吗?

function breakLines(text, linelength)
{
 var linebreak = '\n';
 var counter = 0;
 var line = '';
 var returntext = '';
 var bMatchFound = false;
 var linelen = 50; // 50 characters per line is default

 if(linelength)
 {
  linelen …
Run Code Online (Sandbox Code Playgroud)

javascript string split replace

5
推荐指数
1
解决办法
8553
查看次数

比较两个日期基于年月,不注意一天

我需要能够比较两个日期,仅基于年份和月份(即没有注意到当天),以及JAVA和HQL中的日期.

假设我需要检查是否d1小于或等于d2.这是我尝试过的:

JAVA

calendar.setTime(d1);
int y1 = calendar.get(Calendar.YEAR);
int m1 = calendar.get(Calendar.MONTH);
calendar.setTime(d2);
int y2 = calendar.get(Calendar.YEAR);
int m2 = calendar.get(Calendar.MONTH);
return y1 <= y2 && m1 <= m2;
Run Code Online (Sandbox Code Playgroud)

HQL

select item from Item item
where year(item.d1) <= year(:d2)
and month(item.d1) <= month(:d2)
Run Code Online (Sandbox Code Playgroud)

上面两段代码中的算法都是一样的,但是错了:

  • 2011-10 LTE 2012-09应该返回,true但会返回,false因为2011 < 2012但是10 !< 09

如果我用a OR而不是a AND,它仍然是错误的:

  • 2013-01 LTE 2012-05应该返回,false但会返回,true因为2013 !< 2012但是 …

java compare hql date date-comparison

5
推荐指数
1
解决办法
7374
查看次数

Eclipse、Maven 和代码覆盖率

是否有任何 Eclipse 插件可以直接在 Eclipse JAVA 编辑器中提供代码覆盖率,就像eCoberturaEclEmmatest一样,但使用 Maven 目标(即)启动测试mvn test

我需要指定一个 Maven 配置文件来过滤一些属性(即mvn -Pdev test),但是上面给出的两个解决方案不允许我们使用 Maven(据我所知)。

PS:我知道我可以使用clean siteMaven 目标(即mvn -Pdev clean site)或 Cobertura Maven 插件(即mvn -Pdev cobertura:cobertura)来获取代码覆盖率报告,但我想直接在 Eclipse JAVA 编辑器中获取覆盖率。方便瘾君子

java unit-testing code-coverage eclipse-plugin maven

5
推荐指数
1
解决办法
2504
查看次数

似乎我可以*在定义之前引用一个字段*

public enum MyEnum1 {

    FOO(BAR), BAR(FOO);

    private MyEnum1 other;

    private MyEnum1(MyEnum1 other) {
        this.other = other;
    }

    public MyEnum1 getOther() {
        return other;
    }

}
Run Code Online (Sandbox Code Playgroud)

MyEnum1生成错误Cannot reference a field before it is defined,这是可以理解的,因为声明顺序在这里很重要.但为什么以下编译呢?

public enum MyEnum2 {

    FOO { public MyEnum2 getOther() { return BAR; } },
    BAR { public MyEnum2 getOther() { return FOO; } };

    public abstract MyEnum2 getOther();

}
Run Code Online (Sandbox Code Playgroud)

FOO是指定义BAR之前BAR,我错了吗?

java enums static declaration

5
推荐指数
1
解决办法
648
查看次数

类#isInstance vs Class#isAssignableFrom

鉴于a Class<?> superType和a Object subInstance,它们之间有什么区别

superType.isInstance(subInstance)
Run Code Online (Sandbox Code Playgroud)

superType.isAssignableFrom(subInstance.getClass())
Run Code Online (Sandbox Code Playgroud)

(如果有的话)?

java class instance

5
推荐指数
1
解决办法
1323
查看次数

除非明确指定,否则如何通过默认命名从camelCase到snake_case使Spring Data JPA?

默认情况下,我的 Spring Boot 项目通过将名称从camelCase 转换为snake_case(例如from fooBarto foo_bar)来将实体属性映射到表列。

我正在处理现有的数据库,其中实体属性名称保留为表列名称(例如 from fooBarto fooBar),因此我尝试使用@Column注释显式指定名称:

@Column(name = "fooBar")
private String fooBar;
Run Code Online (Sandbox Code Playgroud)

这是行不通的。我遵循了这里给出的建议:

spring.jpa.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
Run Code Online (Sandbox Code Playgroud)

@Column现在已成功考虑在内,但我在没有@Column注释的属性上丢失了camelCase到snake_case的隐式转换。

除非在@Column注释中明确指定,否则知道默认情况下如何从camelCase 转换为snake_case吗?

java naming hibernate spring-data-jpa spring-boot

5
推荐指数
1
解决办法
7238
查看次数

泛型和继承:需要一个复杂的Map实例

public abstract class Mother {
}

public class Daughter extends Mother {
}

public class Son extends Mother {
}
Run Code Online (Sandbox Code Playgroud)

我需要Map哪些键中的一个DaughterSon类,并且其值是这两个类中的一个,的对象列表分别.

例如:

/* 1. */ map.put(Daughter.class, new ArrayList<Daughter>()); // should compile
/* 2. */ map.put(Son.class, new ArrayList<Son>()); // should compile
/* 3. */ map.put(Daughter.class, new ArrayList<Son>()); // should not compile
/* 4. */ map.put(Son.class, new ArrayList<Daughter>()); // should not compile
Run Code Online (Sandbox Code Playgroud)

我试过了Map<Class<T extends Mother>, List<T>>,但它没有编译.

Map<Class<? extends Mother>, List<? extends Mother>> …

java generics inheritance map

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

注释属性RequestMapping.value的值必须是常量表达式

使用以下代码段时:

public class MyUrls {

    // properties get initialized using static{...}
    public final static String URL_HOMEPAGE = properties.getProperty("app.homepage");    

}

@Controller
public class HomepageController {

    @RequestMapping(MyUrls.URL_HOMEPAGE)
    public String homepage() {
        return "/homepage/index";
    }

}
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

The value for annotation attribute RequestMapping.value must be a constant expression
Run Code Online (Sandbox Code Playgroud)

但事实上,URL_HOMEPAGE确实是一个常数,因为它被声明为public final static.我错了吗?如何解决这个问题?

java spring-mvc url-routing

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

在哪种情况下,"a!= a"可以返回"true"?

java.lang.Math #min(double,double):

public static double min(double a, double b) {
    if (a != a) return a; // a is NaN
    if (a == 0.0d && b == 0.0d && Double.doubleToLongBits(b) == negativeZeroDoubleBits) return b;
    return (a <= b) ? a : b;
}
Run Code Online (Sandbox Code Playgroud)

在哪种情况下可以a != a返回true?似乎a是NaN 的时候,但我无法想象一个例子.你能提供一个吗?

java numbers equality nan

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