如何替换不需要的字符

时间:2017-03-23 13:35:41

标签: groovy soapui

我有一些酒店包含的字符不是valie,因为我想将这些酒店名称作为文件名插入,因为文件命名不允许/,*或?并想知道这个错误意味着什么。

def hotelNameTrim = hotelName.toString()

if (hotelNameTrim.contains("/"))
{
    hotelNameTrim.replaceAll("/", "-")
}
else if (hotelNameTrim.contains("*"))
{
    hotelNameTrim.replaceAll("*", "-")
}
else if (hotelNameTrim.contains("?"))
{
    hotelNameTrim.replaceAll("?", "-")
}

我正在尝试使用if else语句,以便如果酒店名称包含任何这些字符,则将其替换为 - 。然而,我收到并且错误地说是悬空?我只想检查我是否正确使用替换这些字符。

apply plugin: 'com.android.application'
apply plugin: 'com.google.gms.google-services'

android {
    compileSdkVersion 25
    buildToolsVersion "25.0.2"
    useLibrary 'org.apache.http.legacy'
    defaultConfig {
        applicationId "elryad.harajsooq"
        minSdkVersion 15
        targetSdkVersion 25
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
        multiDexEnabled = true
    }

    packagingOptions {
        exclude 'META-INF/DEPENDENCIES'
        exclude 'META-INF/LICENSE'
        exclude 'META-INF/LICENSE.txt'
        exclude 'META-INF/NOTICE'
        exclude 'META-INF/NOTICE.txt'
    }



    buildTypes {
        release {
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
        }
    }
    dependencies {
        compile fileTree(dir: 'libs', include: ['*.jar'])
        androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
            exclude group: 'com.android.support', module: 'support-annotations'
        })
        compile group: 'org.apache.httpcomponents', name: 'httpmime', version: '4.2.3'
        compile group: 'org.apache.httpcomponents', name: 'httpclient-android', version: '4.3.5'
    //    compile 'org.apache.httpcomponents:httpcore:4.4.1'
    //    compile 'org.apache.httpcomponents:httpclient:4.5'
    //    compile 'org.apache.httpcomponents:httpmime:4.2.3'
        compile files('libs/volley.jar')
        compile 'com.android.support:appcompat-v7:25.3.0'
        compile 'com.android.support:design:25.3.0'
        compile 'com.android.support:support-annotations:25.3.0'
        compile 'de.hdodenhof:circleimageview:1.3.0'
        compile 'com.mcxiaoke.volley:library-aar:1.0.0'
        compile 'com.android.support:palette-v7:25.3.0'
        compile 'com.android.support:recyclerview-v7:25.3.0'
        compile 'com.android.support:cardview-v7:25.3.0'
        compile 'com.squareup.okhttp3:okhttp:3.1.2'
        //compile 'com.android.support:support-v7:25.0.2'
        compile "com.android.support:support-core-utils:25.3.0"
        compile 'com.android.support:support-v13:25.3.0'
        compile 'com.google.code.gson:gson:2.7'
        compile 'com.google.firebase:firebase-messaging:9.0.0'
        compile 'com.google.android.gms:play-services:9.0.0'
        compile 'com.android.support.constraint:constraint-layout:1.0.1'
        compile 'com.squareup.picasso:picasso:2.5.2'
        testCompile 'junit:junit:4.12'
        compile 'com.android.support:multidex:1.0.1'

    }

1 个答案:

答案 0 :(得分:3)

replaceAll接受正则表达式作为搜索模式。 *和?是正则表达式中的特殊字符,需要使用反斜杠进行转义。哪个本身需要在Java字符串中转义:)

试试这个:

hotelNameTrim.replaceAll("[\\*\\?/]","-")

这将用破折号替换所有你的角色。