- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个问题,在stem之后我无法得到像($,...)这样的符号,因为在输出中我需要示例字符串单词的价格= 44,66$;//词干提取后//输出 = 4466字符串的词干非常好,但我想要不改变价格的数字(价格),因为我需要输出后的价格。最后我的问题是如何获得像(44.33$)这样的价格数字,并在这个主干代码之后带有符号?
//////这里所有代码“”
class NewStrings {
public String str;
NewString() {
str = "";
}
}
public class Stemmer {
private String Clean( String str ) {
int last = str.length();
Character ch = new Character( str.charAt(0) );
String temp = "";
for ( int i=0; i < last; i++ ) {
if ( ch.isLetterOrDigit( str.charAt(i) ) )
temp += str.charAt(i);
}
return temp;
} //clean
private boolean hasSuffix( String word, String suffix, NewString stem ) {
String tmp = "";
if ( word.length() <= suffix.length() )
return false;
if (suffix.length() > 1)
if ( word.charAt( word.length()-2 ) != suffix.charAt( suffix.length()-2 ) )
return false;
stem.str = "";
for ( int i=0; i<word.length()-suffix.length(); i++ )
stem.str += word.charAt( i );
tmp = stem.str;
for ( int i=0; i<suffix.length(); i++ )
tmp += suffix.charAt( i );
if ( tmp.compareTo( word ) == 0 )
return true;
else
return false;
}
private boolean vowel( char ch, char prev ) {
switch ( ch ) {
case 'a': case 'e': case 'i': case 'o': case 'u':
return true;
case 'y': {
switch ( prev ) {
case 'a': case 'e': case 'i': case 'o': case 'u':
return false;
default:
return true;
}
}
default :
return false;
}
}
private int measure( String stem ) {
int i=0, count = 0;
int length = stem.length();
while ( i < length ) {
for ( ; i < length ; i++ ) {
if ( i > 0 ) {
if ( vowel(stem.charAt(i),stem.charAt(i-1)) )
break;
}
else {
if ( vowel(stem.charAt(i),'a') )
break;
}
}
for ( i++ ; i < length ; i++ ) {
if ( i > 0 ) {
if ( !vowel(stem.charAt(i),stem.charAt(i-1)) )
break;
}
else {
if ( !vowel(stem.charAt(i),'?') )
break;
}
}
if ( i < length ) {
count++;
i++;
}
} //while
return(count);
}
private boolean containsVowel( String word ) {
for (int i=0 ; i < word.length(); i++ )
if ( i > 0 ) {
if ( vowel(word.charAt(i),word.charAt(i-1)) )
return true;
}
else {
if ( vowel(word.charAt(0),'a') )
return true;
}
return false;
}
private boolean cvc( String str ) {
int length=str.length();
if ( length < 3 )
return false;
if ( (!vowel(str.charAt(length-1),str.charAt(length-2)) )
&& (str.charAt(length-1) != 'w') && (str.charAt(length-1) != 'x') && (str.charAt(length-1) != 'y')
&& (vowel(str.charAt(length-2),str.charAt(length-3))) ) {
if (length == 3) {
if (!vowel(str.charAt(0),'?'))
return true;
else
return false;
}
else {
if (!vowel(str.charAt(length-3),str.charAt(length-4)) )
return true;
else
return false;
}
}
return false;
}
private String step1( String str ) {
NewString stem = new NewString();
if ( str.charAt( str.length()-1 ) == 's' ) {
if ( (hasSuffix( str, "sses", stem )) || (hasSuffix( str, "ies", stem)) ){
String tmp = "";
for (int i=0; i<str.length()-2; i++)
tmp += str.charAt(i);
str = tmp;
}
else {
if ( ( str.length() == 1 ) && ( str.charAt(str.length()-1) == 's' ) ) {
str = "";
return str;
}
if ( str.charAt( str.length()-2 ) != 's' ) {
String tmp = "";
for (int i=0; i<str.length()-1; i++)
tmp += str.charAt(i);
str = tmp;
}
}
}
if ( hasSuffix( str,"eed",stem ) ) {
if ( measure( stem.str ) > 0 ) {
String tmp = "";
for (int i=0; i<str.length()-1; i++)
tmp += str.charAt( i );
str = tmp;
}
}
else {
if ( (hasSuffix( str,"ed",stem )) || (hasSuffix( str,"ing",stem )) ) {
if (containsVowel( stem.str )) {
String tmp = "";
for ( int i = 0; i < stem.str.length(); i++)
tmp += str.charAt( i );
str = tmp;
if ( str.length() == 1 )
return str;
if ( ( hasSuffix( str,"at",stem) ) || ( hasSuffix( str,"bl",stem ) ) || ( hasSuffix( str,"iz",stem) ) ) {
str += "e";
}
else {
int length = str.length();
if ( (str.charAt(length-1) == str.charAt(length-2))
&& (str.charAt(length-1) != 'l') && (str.charAt(length-1) != 's') && (str.charAt(length-1) != 'z') ) {
tmp = "";
for (int i=0; i<str.length()-1; i++)
tmp += str.charAt(i);
str = tmp;
}
else
if ( measure( str ) == 1 ) {
if ( cvc(str) )
str += "e";
}
}
}
}
}
if ( hasSuffix(str,"y",stem) )
if ( containsVowel( stem.str ) ) {
String tmp = "";
for (int i=0; i<str.length()-1; i++ )
tmp += str.charAt(i);
str = tmp + "i";
}
return str;
}
private String step2( String str ) {
String[][] suffixes = { { "ational", "ate" },
{ "tional", "tion" },
{ "enci", "ence" },
{ "anci", "ance" },
{ "izer", "ize" },
{ "iser", "ize" },
{ "abli", "able" },
{ "alli", "al" },
{ "entli", "ent" },
{ "eli", "e" },
{ "ousli", "ous" },
{ "ization", "ize" },
{ "isation", "ize" },
{ "ation", "ate" },
{ "ator", "ate" },
{ "alism", "al" },
{ "iveness", "ive" },
{ "fulness", "ful" },
{ "ousness", "ous" },
{ "aliti", "al" },
{ "iviti", "ive" },
{ "biliti", "ble" }};
NewString stem = new NewString();
for ( int index = 0 ; index < suffixes.length; index++ ) {
if ( hasSuffix ( str, suffixes[index][0], stem ) ) {
if ( measure ( stem.str ) > 0 ) {
str = stem.str + suffixes[index][1];
return str;
}
}
}
return str;
}
private String step3( String str ) {
String[][] suffixes = { { "icate", "ic" },
{ "ative", "" },
{ "alize", "al" },
{ "alise", "al" },
{ "iciti", "ic" },
{ "ical", "ic" },
{ "ful", "" },
{ "ness", "" }};
NewString stem = new NewString();
for ( int index = 0 ; index<suffixes.length; index++ ) {
if ( hasSuffix ( str, suffixes[index][0], stem ))
if ( measure ( stem.str ) > 0 ) {
str = stem.str + suffixes[index][1];
return str;
}
}
return str;
}
private String step4( String str ) {
String[] suffixes = { "al", "ance", "ence", "er", "ic", "able", "ible", "ant", "ement", "ment", "ent", "sion", "tion",
"ou", "ism", "ate", "iti", "ous", "ive", "ize", "ise"};
NewString stem = new NewString();
for ( int index = 0 ; index<suffixes.length; index++ ) {
if ( hasSuffix ( str, suffixes[index], stem ) ) {
if ( measure ( stem.str ) > 1 ) {
str = stem.str;
return str;
}
}
}
return str;
}
private String step5( String str ) {
if ( str.charAt(str.length()-1) == 'e' ) {
if ( measure(str) > 1 ) {/* measure(str)==measure(stem) if ends in vowel */
String tmp = "";
for ( int i=0; i<str.length()-1; i++ )
tmp += str.charAt( i );
str = tmp;
}
else
if ( measure(str) == 1 ) {
String stem = "";
for ( int i=0; i<str.length()-1; i++ )
stem += str.charAt( i );
if ( !cvc(stem) )
str = stem;
}
}
if ( str.length() == 1 )
return str;
if ( (str.charAt(str.length()-1) == 'l') && (str.charAt(str.length()-2) == 'l') && (measure(str) > 1) )
if ( measure(str) > 1 ) {/* measure(str)==measure(stem) if ends in vowel */
String tmp = "";
for ( int i=0; i<str.length()-1; i++ )
tmp += str.charAt( i );
str = tmp;
}
return str;
}
//这是您的添加代码
/*** chrs besides these will be removed */
static final String allowedChrs = "$€¥£0123456789,.";
public static String step6(String str){
int sizeOfString = str.length();
StringBuilder tmp = new StringBuilder();
for(int i=0;i<sizeOfString;++i){
if(allowedChrs.indexOf(str.charAt(i)) > -1){
tmp.append(str.charAt(i));
}
}
return tmp.toString();
}
private String stripPrefixes ( String str) {
String[] prefixes = { "kilo", "micro", "milli", "intra", "ultra", "mega", "nano", "pico", "pseudo"};
int last = prefixes.length;
for ( int i=0 ; i<last; i++ ) {
if ( str.startsWith( prefixes[i] ) ) {
String temp = "";
for ( int j=0 ; j< str.length()-prefixes[i].length(); j++ )
temp += str.charAt( j+prefixes[i].length() );
return temp;
}
}
return str;
}
private String stripSuffixes( String str ) {
str = step1( str );
if ( str.length() >= 1 )
str = step2( str );
if ( str.length() >= 1 )
str = step3( str );
if ( str.length() >= 1 )
str = step4( str );
if ( str.length() >= 1 )
str = step5( str );
if ( str.length() >= 1 )
str = step6( str );
return str;
}
public static void main(String[] args) {
String Word = "3.4$";
// String str = stripAffixes (Word);
porrrr fun = new porrrr();
fun.stripAffixes(Word);
System.out.println(fun.stripAffixes(Word));
} //stripAffixes
public String stripAffixes( String str ) {
str = str.toLowerCase();
str = Clean(str);
if (( str != "" ) && (str.length() > 2)) {
str = stripPrefixes(str);
if (str != "" )
str = stripSuffixes(str);
}
return str;
} //stripAffixes
} //class
最佳答案
很难理解你到底要做什么,但是,你见过你的 Clean 方法吗?
if ( ch.isLetterOrDigit( str.charAt(i) ) ){ // you only take letters and digits from the initial String.
$ 和逗号既不是数字也不是字母。
编辑它应该看起来像这样:
static final List<Character> list = Arrays.asList('$','€','¥','£');
private String step6(String str){
int sizeOfString = str.length();
StringBuilder tmp = new StringBuilder();
for(int i=0;i<sizeOfString;++i){
if(list.contains(str.charAt(i))){
tmp.append(str.charAt(i));
}
}
return tmp.toString();
}
关于java - java中如何获取词干后的符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16333952/
我正在编写一个具有以下签名的 Java 方法。 void Logger(Method method, Object[] args); 如果一个方法(例如 ABC() )调用此方法 Logger,它应该
我是 Java 新手。 我的问题是我的 Java 程序找不到我试图用作的图像文件一个 JButton。 (目前这段代码什么也没做,因为我只是得到了想要的外观第一的)。这是我的主课 代码: packag
好的,今天我在接受采访,我已经编写 Java 代码多年了。采访中说“Java 垃圾收集是一个棘手的问题,我有几个 friend 一直在努力弄清楚。你在这方面做得怎么样?”。她是想骗我吗?还是我的一生都
我的 friend 给了我一个谜语让我解开。它是这样的: There are 100 people. Each one of them, in his turn, does the following
如果我将使用 Java 5 代码的应用程序编译成字节码,生成的 .class 文件是否能够在 Java 1.4 下运行? 如果后者可以工作并且我正在尝试在我的 Java 1.4 应用程序中使用 Jav
有关于why Java doesn't support unsigned types的问题以及一些关于处理无符号类型的问题。我做了一些搜索,似乎 Scala 也不支持无符号数据类型。限制是Java和S
我只是想知道在一个 java 版本中生成的字节码是否可以在其他 java 版本上运行 最佳答案 通常,字节码无需修改即可在 较新 版本的 Java 上运行。它不会在旧版本上运行,除非您使用特殊参数 (
我有一个关于在命令提示符下执行 java 程序的基本问题。 在某些机器上我们需要指定 -cp 。 (类路径)同时执行java程序 (test为java文件名与.class文件存在于同一目录下) jav
我已经阅读 StackOverflow 有一段时间了,现在我才鼓起勇气提出问题。我今年 20 岁,目前在我的家乡(罗马尼亚克卢日-纳波卡)就读 IT 大学。足以介绍:D。 基本上,我有一家提供簿记应用
我有 public JSONObject parseXML(String xml) { JSONObject jsonObject = XML.toJSONObject(xml); r
我已经在 Java 中实现了带有动态类型的简单解释语言。不幸的是我遇到了以下问题。测试时如下代码: def main() { def ks = Map[[1, 2]].keySet()
一直提示输入 1 到 10 的数字 - 结果应将 st、rd、th 和 nd 添加到数字中。编写一个程序,提示用户输入 1 到 10 之间的任意整数,然后以序数形式显示该整数并附加后缀。 public
我有这个 DownloadFile.java 并按预期下载该文件: import java.io.*; import java.net.URL; public class DownloadFile {
我想在 GUI 上添加延迟。我放置了 2 个 for 循环,然后重新绘制了一个标签,但这 2 个 for 循环一个接一个地执行,并且标签被重新绘制到最后一个。 我能做什么? for(int i=0;
我正在对对象 Student 的列表项进行一些测试,但是我更喜欢在 java 类对象中创建硬编码列表,然后从那里提取数据,而不是连接到数据库并在结果集中选择记录。然而,自从我这样做以来已经很长时间了,
我知道对象创建分为三个部分: 声明 实例化 初始化 classA{} classB extends classA{} classA obj = new classB(1,1); 实例化 它必须使用
我有兴趣使用 GPRS 构建车辆跟踪系统。但是,我有一些问题要问以前做过此操作的人: GPRS 是最好的技术吗?人们意识到任何问题吗? 我计划使用 Java/Java EE - 有更好的技术吗? 如果
我可以通过递归方法反转数组,例如:数组={1,2,3,4,5} 数组结果={5,4,3,2,1}但我的结果是相同的数组,我不知道为什么,请帮助我。 public class Recursion { p
有这样的标准方式吗? 包括 Java源代码-测试代码- Ant 或 Maven联合单元持续集成(可能是巡航控制)ClearCase 版本控制工具部署到应用服务器 最后我希望有一个自动构建和集成环境。
我什至不知道这是否可能,我非常怀疑它是否可能,但如果可以,您能告诉我怎么做吗?我只是想知道如何从打印机打印一些文本。 有什么想法吗? 最佳答案 这里有更简单的事情。 import javax.swin
我是一名优秀的程序员,十分优秀!